q2-tecton-elements 1.45.1 → 1.45.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/q2-message.cjs.entry.js +1 -1
- package/dist/cjs/q2-message.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js +1 -1
- package/dist/cjs/q2-stepper-vertical.cjs.entry.js.map +1 -1
- package/dist/cjs/q2-stepper.cjs.entry.js +1 -1
- package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
- package/dist/collection/components/q2-message/q2-message.css +3 -3
- package/dist/collection/components/q2-stepper/q2-stepper.css +4 -2
- package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.css +5 -16
- package/dist/components/q2-message2.js +1 -1
- package/dist/components/q2-message2.js.map +1 -1
- package/dist/components/q2-stepper-vertical.js +1 -1
- package/dist/components/q2-stepper-vertical.js.map +1 -1
- package/dist/components/q2-stepper.js +1 -1
- package/dist/components/q2-stepper.js.map +1 -1
- package/dist/esm/q2-message.entry.js +1 -1
- package/dist/esm/q2-message.entry.js.map +1 -1
- package/dist/esm/q2-stepper-vertical.entry.js +1 -1
- package/dist/esm/q2-stepper-vertical.entry.js.map +1 -1
- package/dist/esm/q2-stepper.entry.js +1 -1
- package/dist/esm/q2-stepper.entry.js.map +1 -1
- package/dist/q2-tecton-elements/p-445990a8.entry.js +2 -0
- package/dist/q2-tecton-elements/p-445990a8.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-a977e723.entry.js +2 -0
- package/dist/q2-tecton-elements/p-a977e723.entry.js.map +1 -0
- package/dist/q2-tecton-elements/p-c016bd18.entry.js +2 -0
- package/dist/q2-tecton-elements/p-c016bd18.entry.js.map +1 -0
- package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
- package/dist/test/elements/q2-action-sheet-test.e2e.js +5 -1
- package/dist/test/elements/q2-action-sheet-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-avatar-test.e2e.js +2 -3
- package/dist/test/elements/q2-avatar-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-badge-test.e2e.js +5 -1
- package/dist/test/elements/q2-badge-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-btn-test.e2e.js +5 -1
- package/dist/test/elements/q2-btn-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-calendar-test.e2e.js +5 -1
- package/dist/test/elements/q2-calendar-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-card-test.e2e.js +5 -1
- package/dist/test/elements/q2-card-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-chart-area-test.e2e.js +5 -1
- package/dist/test/elements/q2-chart-area-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-chart-bar-test.e2e.js +5 -1
- package/dist/test/elements/q2-chart-bar-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-chart-donut-test.e2e.js +5 -1
- package/dist/test/elements/q2-chart-donut-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-checkbox-group-test.e2e.js +5 -1
- package/dist/test/elements/q2-checkbox-group-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-checkbox-test.e2e.js +5 -1
- package/dist/test/elements/q2-checkbox-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-currency-test.e2e.js +5 -1
- package/dist/test/elements/q2-currency-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-data-table-test.e2e.js +5 -1
- package/dist/test/elements/q2-data-table-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-dropdown-item-test.e2e.js +5 -1
- package/dist/test/elements/q2-dropdown-item-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-dropdown-test.e2e.js +5 -1
- package/dist/test/elements/q2-dropdown-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-editable-field-test.e2e.js +5 -1
- package/dist/test/elements/q2-editable-field-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-icon-test.e2e.js +5 -1
- package/dist/test/elements/q2-icon-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-input-test.e2e.js +5 -1
- package/dist/test/elements/q2-input-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-loading-test.e2e.js +5 -1
- package/dist/test/elements/q2-loading-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-loc-test.e2e.js +5 -1
- package/dist/test/elements/q2-loc-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-message-test.e2e.js +5 -1
- package/dist/test/elements/q2-message-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-optgroup-test.e2e.js +5 -1
- package/dist/test/elements/q2-optgroup-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-option-list-test.e2e.js +5 -1
- package/dist/test/elements/q2-option-list-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-option-test.e2e.js +5 -1
- package/dist/test/elements/q2-option-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-pagination-test.e2e.js +5 -1
- package/dist/test/elements/q2-pagination-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-pill-test.e2e.js +2 -3
- package/dist/test/elements/q2-pill-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-popover-test.e2e.js +6 -2
- package/dist/test/elements/q2-popover-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-radio-group-test.e2e.js +5 -1
- package/dist/test/elements/q2-radio-group-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-radio-test.e2e.js +5 -1
- package/dist/test/elements/q2-radio-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-relative-time-test.e2e.js +8 -4
- package/dist/test/elements/q2-relative-time-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-section-test.e2e.js +5 -1
- package/dist/test/elements/q2-section-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-select-test.e2e.js +5 -1
- package/dist/test/elements/q2-select-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-stepper-pane-test.e2e.js +5 -1
- package/dist/test/elements/q2-stepper-pane-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-stepper-test.e2e.js +5 -1
- package/dist/test/elements/q2-stepper-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-stepper-vertical-test.e2e.js +5 -1
- package/dist/test/elements/q2-stepper-vertical-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-tab-container-test.e2e.js +5 -1
- package/dist/test/elements/q2-tab-container-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-tab-pane-test.e2e.js +5 -1
- package/dist/test/elements/q2-tab-pane-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-tag-test.e2e.js +2 -3
- package/dist/test/elements/q2-tag-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-textarea-test.e2e.js +5 -1
- package/dist/test/elements/q2-textarea-test.e2e.js.map +1 -1
- package/dist/test/elements/q2-tooltip-test.e2e.js +5 -1
- package/dist/test/elements/q2-tooltip-test.e2e.js.map +1 -1
- package/dist/test/elements/tecton-tab-pane-test.e2e.js +5 -1
- package/dist/test/elements/tecton-tab-pane-test.e2e.js.map +1 -1
- package/dist/test/helpers.js +1 -1
- package/dist/test/helpers.js.map +1 -1
- package/dist/types/workspace/workspace/tecton-production_release_1.45.x/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +1 -1
- package/package.json +3 -3
- package/dist/q2-tecton-elements/p-4f7e2c8a.entry.js +0 -2
- package/dist/q2-tecton-elements/p-4f7e2c8a.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-bf125cdf.entry.js +0 -2
- package/dist/q2-tecton-elements/p-bf125cdf.entry.js.map +0 -1
- package/dist/q2-tecton-elements/p-f418967b.entry.js +0 -2
- package/dist/q2-tecton-elements/p-f418967b.entry.js.map +0 -1
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
import { setTestStrings, setup, dispatchEvent, testDeprecatedAriaLabel } from "../helpers";
|
|
1
|
+
import { setTestStrings, setup, dispatchEvent, testDeprecatedAriaLabel, getListOfStyleCompilationIssues, } from "../helpers";
|
|
2
2
|
describe('q2-dropdown-item', () => {
|
|
3
|
+
it('properly compiles CSS vars and functions', async () => {
|
|
4
|
+
const page = await setup({ html: '<q2-dropdown-item></q2-dropdown-item>' });
|
|
5
|
+
expect(await getListOfStyleCompilationIssues(page, 'q2-dropdown-item')).toHaveLength(0);
|
|
6
|
+
});
|
|
3
7
|
it('renders base state', async function () {
|
|
4
8
|
const page = await setup({
|
|
5
9
|
html: `
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-dropdown-item-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-dropdown-item-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { setTestStrings, setup, dispatchEvent, testDeprecatedAriaLabel } from '../helpers';\n\ndescribe('q2-dropdown-item', () => {\n it('renders base state', async function (): Promise<void> {\n const page = await setup({\n html: `\n <q2-dropdown-item value=\"itemValue\">item text</q2-dropdown-item>\n `,\n });\n\n const itemBtn = await page.find('q2-dropdown-item >>> [test-id=\"dropdownItem\"]');\n expect(itemBtn).not.toBeNull();\n expect(itemBtn.tagName.toLowerCase()).toEqual('q2-btn');\n expect(itemBtn).toHaveClass('dropdown-item');\n expect(itemBtn).not.toHaveAttribute('disabled');\n expect(itemBtn).toEqualAttribute('role', 'menuitem');\n\n const itemSeparator = await page.find('q2-dropdown-item >>> [test-id=\"dropdownItemSeparator\"]');\n expect(itemSeparator).toBeNull();\n\n const itemSlotText = await page.$eval(\n 'q2-dropdown-item',\n (element: HTMLQ2DropdownItemElement) =>\n element.shadowRoot.querySelector('slot').assignedNodes()[0].textContent\n );\n expect(itemSlotText).toEqual('item text');\n\n const item = await page.find('q2-dropdown-item');\n item.setProperty('disabled', true);\n await page.waitForChanges();\n\n expect(itemBtn).toHaveAttribute('disabled');\n });\n\n it('renders as separator', async function (): Promise<void> {\n const page = await setup({\n html: `\n <q2-dropdown-item value=\"itemValue\" separator>item text</q2-dropdown-item>\n `,\n });\n\n const itemSeparator = await page.find('q2-dropdown-item >>> [test-id=\"dropdownItemSeparator\"]');\n expect(itemSeparator).not.toBeNull();\n expect(itemSeparator).toEqualAttribute('role', 'separator');\n expect(itemSeparator).toHaveClass('dropdown-separator');\n\n const itemBtn = await page.find('q2-dropdown-item >>> [test-id=\"dropdownItem\"]');\n expect(itemBtn).toBeNull();\n });\n\n it('handles removability', async function (): Promise<void> {\n const page = await setup({\n html: `\n <q2-dropdown-item value=\"itemValue\">item text</q2-dropdown-item>\n `,\n });\n\n let removeBtn = await page.find('q2-dropdown-item >>> [test-id=\"removeDropdownItem\"]');\n expect(removeBtn).toBeNull();\n\n await setTestStrings(page, {\n 'tecton.element.dropdownItem.remove': 'Remove Option {0}',\n });\n const item = await page.find('q2-dropdown-item');\n item.setProperty('removable', true);\n await page.waitForChanges();\n\n removeBtn = await page.find('q2-dropdown-item >>> [test-id=\"removeDropdownItem\"]');\n expect(removeBtn).not.toBeNull();\n expect(removeBtn).toHaveClass('remove-dropdown-item');\n expect(removeBtn).not.toHaveAttribute('disabled');\n expect(removeBtn).toEqualAttribute('role', 'menuitem');\n expect(removeBtn).toEqualAttribute('label', 'Remove Option ');\n\n item.setProperty('label', 'Item Text');\n await page.waitForChanges();\n expect(removeBtn).toEqualAttribute('label', 'Remove Option Item Text');\n\n item.setProperty('disabled', true);\n await page.waitForChanges();\n expect(removeBtn).toHaveAttribute('disabled');\n });\n\n it('correctly emits click event', async function (): Promise<void> {\n const page = await setup({\n html: `\n <q2-dropdown-item value=\"itemValue\" removable>item text</q2-dropdown-item>\n `,\n });\n\n const item = await page.find('q2-dropdown-item');\n const clickSpy = await item.spyOnEvent('click');\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"dropdownItem\"]'], 'click');\n expect(clickSpy).toHaveReceivedEventTimes(1);\n expect(clickSpy).toHaveReceivedEventDetail({ type: 'select', value: 'itemValue' });\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"removeDropdownItem\"]'], 'click');\n expect(clickSpy).toHaveReceivedEventTimes(2);\n expect(clickSpy).toHaveReceivedEventDetail({ type: 'remove', value: 'itemValue' });\n });\n\n it('does not trigger focus delegator when item or remove btn focused', async function (): Promise<void> {\n const page = await setup({\n html: `\n <q2-dropdown-item value=\"itemValue\" removable>item text</q2-dropdown-item>\n `,\n });\n\n const item = await page.find('q2-dropdown-item');\n const itemFocusSpy = await item.spyOnEvent('focus');\n\n const itemBtn = await page.find('q2-dropdown-item >>> [test-id=\"dropdownItem\"]');\n const itemBtnFocusSpy = await itemBtn.spyOnEvent('focus');\n\n expect(itemFocusSpy).toHaveReceivedEventTimes(0);\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(0);\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"removeDropdownItem\"]'], 'focus');\n expect(itemFocusSpy).toHaveReceivedEventTimes(0);\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(0);\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"dropdownItem\"]'], 'focus');\n expect(itemFocusSpy).toHaveReceivedEventTimes(0);\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(2);\n });\n\n it('handles focus manipulation', async function (): Promise<void> {\n const page = await setup({\n html: `\n <q2-dropdown-item value=\"itemValue\" removable>item text</q2-dropdown-item>\n `,\n });\n\n const itemBtn = await page.find('q2-dropdown-item >>> [test-id=\"dropdownItem\"]');\n const itemBtnFocusSpy = await itemBtn.spyOnEvent('focus');\n const removeBtn = await page.find('q2-dropdown-item >>> [test-id=\"removeDropdownItem\"]');\n const removeBtnFocusSpy = await removeBtn.spyOnEvent('focus');\n\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(0);\n expect(removeBtnFocusSpy).toHaveReceivedEventTimes(0);\n\n await dispatchEvent(page, 'q2-dropdown-item', 'focus');\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(2);\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"dropdownItem\"]'], 'keydown', {\n key: 'ArrowRight',\n });\n expect(removeBtnFocusSpy).toHaveReceivedEventTimes(2);\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"removeDropdownItem\"]'], 'keydown', {\n key: 'ArrowLeft',\n });\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(4);\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"dropdownItem\"]'], 'keydown', {\n key: 'Right',\n });\n expect(removeBtnFocusSpy).toHaveReceivedEventTimes(4);\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"removeDropdownItem\"]'], 'keydown', { key: 'Left' });\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(6);\n });\n\n it('item content is the same width as the q2-btn', async function (): Promise<void> {\n const page = await setup({\n html: `<q2-dropdown-item>Test</q2-dropdown-item>`,\n });\n\n const { btnWidth, contentWidth, btnPadding } = await page.$eval(\n 'q2-dropdown-item',\n (el: HTMLQ2DropdownItemElement) => {\n const itemBtn = el.shadowRoot.querySelector('.dropdown-item');\n const itemContent = el.shadowRoot.querySelector('.dropdown-item-content');\n const contentWidth = itemContent.clientWidth;\n const btnWidth = itemBtn.clientWidth;\n const btnPadding = parseInt(getComputedStyle(itemBtn).getPropertyValue('padding'));\n return {\n btnWidth,\n contentWidth,\n btnPadding,\n };\n }\n );\n\n expect(btnWidth).toEqual(contentWidth + btnPadding * 2);\n });\n\n describe('Deprecations', () => {\n it('handles deprecated `ariaLabel` prop', async () => {\n const label = 'My Label';\n const page = await setup({\n html: `<q2-dropdown-item aria-label=\"${label}\">Text</q2-dropdown-item>`,\n });\n await page.waitForChanges();\n await testDeprecatedAriaLabel(await page.find('q2-dropdown-item'), label);\n const button = await page.find('q2-dropdown-item >>> [test-id=\"dropdownItem\"]');\n expect(button).toEqualAttribute('label', label);\n expect(button).toHaveAttribute('hide-label');\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"q2-dropdown-item-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-dropdown-item-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n setTestStrings,\n setup,\n dispatchEvent,\n testDeprecatedAriaLabel,\n getListOfStyleCompilationIssues,\n} from '../helpers';\n\ndescribe('q2-dropdown-item', () => {\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-dropdown-item></q2-dropdown-item>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-dropdown-item')).toHaveLength(0);\n });\n it('renders base state', async function (): Promise<void> {\n const page = await setup({\n html: `\n <q2-dropdown-item value=\"itemValue\">item text</q2-dropdown-item>\n `,\n });\n\n const itemBtn = await page.find('q2-dropdown-item >>> [test-id=\"dropdownItem\"]');\n expect(itemBtn).not.toBeNull();\n expect(itemBtn.tagName.toLowerCase()).toEqual('q2-btn');\n expect(itemBtn).toHaveClass('dropdown-item');\n expect(itemBtn).not.toHaveAttribute('disabled');\n expect(itemBtn).toEqualAttribute('role', 'menuitem');\n\n const itemSeparator = await page.find('q2-dropdown-item >>> [test-id=\"dropdownItemSeparator\"]');\n expect(itemSeparator).toBeNull();\n\n const itemSlotText = await page.$eval(\n 'q2-dropdown-item',\n (element: HTMLQ2DropdownItemElement) =>\n element.shadowRoot.querySelector('slot').assignedNodes()[0].textContent\n );\n expect(itemSlotText).toEqual('item text');\n\n const item = await page.find('q2-dropdown-item');\n item.setProperty('disabled', true);\n await page.waitForChanges();\n\n expect(itemBtn).toHaveAttribute('disabled');\n });\n\n it('renders as separator', async function (): Promise<void> {\n const page = await setup({\n html: `\n <q2-dropdown-item value=\"itemValue\" separator>item text</q2-dropdown-item>\n `,\n });\n\n const itemSeparator = await page.find('q2-dropdown-item >>> [test-id=\"dropdownItemSeparator\"]');\n expect(itemSeparator).not.toBeNull();\n expect(itemSeparator).toEqualAttribute('role', 'separator');\n expect(itemSeparator).toHaveClass('dropdown-separator');\n\n const itemBtn = await page.find('q2-dropdown-item >>> [test-id=\"dropdownItem\"]');\n expect(itemBtn).toBeNull();\n });\n\n it('handles removability', async function (): Promise<void> {\n const page = await setup({\n html: `\n <q2-dropdown-item value=\"itemValue\">item text</q2-dropdown-item>\n `,\n });\n\n let removeBtn = await page.find('q2-dropdown-item >>> [test-id=\"removeDropdownItem\"]');\n expect(removeBtn).toBeNull();\n\n await setTestStrings(page, {\n 'tecton.element.dropdownItem.remove': 'Remove Option {0}',\n });\n const item = await page.find('q2-dropdown-item');\n item.setProperty('removable', true);\n await page.waitForChanges();\n\n removeBtn = await page.find('q2-dropdown-item >>> [test-id=\"removeDropdownItem\"]');\n expect(removeBtn).not.toBeNull();\n expect(removeBtn).toHaveClass('remove-dropdown-item');\n expect(removeBtn).not.toHaveAttribute('disabled');\n expect(removeBtn).toEqualAttribute('role', 'menuitem');\n expect(removeBtn).toEqualAttribute('label', 'Remove Option ');\n\n item.setProperty('label', 'Item Text');\n await page.waitForChanges();\n expect(removeBtn).toEqualAttribute('label', 'Remove Option Item Text');\n\n item.setProperty('disabled', true);\n await page.waitForChanges();\n expect(removeBtn).toHaveAttribute('disabled');\n });\n\n it('correctly emits click event', async function (): Promise<void> {\n const page = await setup({\n html: `\n <q2-dropdown-item value=\"itemValue\" removable>item text</q2-dropdown-item>\n `,\n });\n\n const item = await page.find('q2-dropdown-item');\n const clickSpy = await item.spyOnEvent('click');\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"dropdownItem\"]'], 'click');\n expect(clickSpy).toHaveReceivedEventTimes(1);\n expect(clickSpy).toHaveReceivedEventDetail({ type: 'select', value: 'itemValue' });\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"removeDropdownItem\"]'], 'click');\n expect(clickSpy).toHaveReceivedEventTimes(2);\n expect(clickSpy).toHaveReceivedEventDetail({ type: 'remove', value: 'itemValue' });\n });\n\n it('does not trigger focus delegator when item or remove btn focused', async function (): Promise<void> {\n const page = await setup({\n html: `\n <q2-dropdown-item value=\"itemValue\" removable>item text</q2-dropdown-item>\n `,\n });\n\n const item = await page.find('q2-dropdown-item');\n const itemFocusSpy = await item.spyOnEvent('focus');\n\n const itemBtn = await page.find('q2-dropdown-item >>> [test-id=\"dropdownItem\"]');\n const itemBtnFocusSpy = await itemBtn.spyOnEvent('focus');\n\n expect(itemFocusSpy).toHaveReceivedEventTimes(0);\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(0);\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"removeDropdownItem\"]'], 'focus');\n expect(itemFocusSpy).toHaveReceivedEventTimes(0);\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(0);\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"dropdownItem\"]'], 'focus');\n expect(itemFocusSpy).toHaveReceivedEventTimes(0);\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(2);\n });\n\n it('handles focus manipulation', async function (): Promise<void> {\n const page = await setup({\n html: `\n <q2-dropdown-item value=\"itemValue\" removable>item text</q2-dropdown-item>\n `,\n });\n\n const itemBtn = await page.find('q2-dropdown-item >>> [test-id=\"dropdownItem\"]');\n const itemBtnFocusSpy = await itemBtn.spyOnEvent('focus');\n const removeBtn = await page.find('q2-dropdown-item >>> [test-id=\"removeDropdownItem\"]');\n const removeBtnFocusSpy = await removeBtn.spyOnEvent('focus');\n\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(0);\n expect(removeBtnFocusSpy).toHaveReceivedEventTimes(0);\n\n await dispatchEvent(page, 'q2-dropdown-item', 'focus');\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(2);\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"dropdownItem\"]'], 'keydown', {\n key: 'ArrowRight',\n });\n expect(removeBtnFocusSpy).toHaveReceivedEventTimes(2);\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"removeDropdownItem\"]'], 'keydown', {\n key: 'ArrowLeft',\n });\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(4);\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"dropdownItem\"]'], 'keydown', {\n key: 'Right',\n });\n expect(removeBtnFocusSpy).toHaveReceivedEventTimes(4);\n\n await dispatchEvent(page, ['q2-dropdown-item', '[test-id=\"removeDropdownItem\"]'], 'keydown', { key: 'Left' });\n expect(itemBtnFocusSpy).toHaveReceivedEventTimes(6);\n });\n\n it('item content is the same width as the q2-btn', async function (): Promise<void> {\n const page = await setup({\n html: `<q2-dropdown-item>Test</q2-dropdown-item>`,\n });\n\n const { btnWidth, contentWidth, btnPadding } = await page.$eval(\n 'q2-dropdown-item',\n (el: HTMLQ2DropdownItemElement) => {\n const itemBtn = el.shadowRoot.querySelector('.dropdown-item');\n const itemContent = el.shadowRoot.querySelector('.dropdown-item-content');\n const contentWidth = itemContent.clientWidth;\n const btnWidth = itemBtn.clientWidth;\n const btnPadding = parseInt(getComputedStyle(itemBtn).getPropertyValue('padding'));\n return {\n btnWidth,\n contentWidth,\n btnPadding,\n };\n }\n );\n\n expect(btnWidth).toEqual(contentWidth + btnPadding * 2);\n });\n\n describe('Deprecations', () => {\n it('handles deprecated `ariaLabel` prop', async () => {\n const label = 'My Label';\n const page = await setup({\n html: `<q2-dropdown-item aria-label=\"${label}\">Text</q2-dropdown-item>`,\n });\n await page.waitForChanges();\n await testDeprecatedAriaLabel(await page.find('q2-dropdown-item'), label);\n const button = await page.find('q2-dropdown-item >>> [test-id=\"dropdownItem\"]');\n expect(button).toEqualAttribute('label', label);\n expect(button).toHaveAttribute('hide-label');\n });\n });\n});\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { setTestStrings, setup, dispatchEvent, promiseMap, testDeprecatedAriaLabel, getNestedElementProperty, } from "../helpers";
|
|
1
|
+
import { setTestStrings, setup, dispatchEvent, promiseMap, testDeprecatedAriaLabel, getNestedElementProperty, getListOfStyleCompilationIssues, } from "../helpers";
|
|
2
2
|
describe('q2-dropdown', () => {
|
|
3
3
|
let page;
|
|
4
4
|
let dropdown;
|
|
@@ -8,6 +8,10 @@ describe('q2-dropdown', () => {
|
|
|
8
8
|
let buttonFocusSpy;
|
|
9
9
|
let firstOption;
|
|
10
10
|
let closeDropdown;
|
|
11
|
+
it('properly compiles CSS vars and functions', async () => {
|
|
12
|
+
const page = await setup({ html: '<q2-dropdown></q2-dropdown>' });
|
|
13
|
+
expect(await getListOfStyleCompilationIssues(page, 'q2-dropdown')).toHaveLength(0);
|
|
14
|
+
});
|
|
11
15
|
it('renders base state', async () => {
|
|
12
16
|
page = await setup({
|
|
13
17
|
html: `
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"q2-dropdown-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-dropdown-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EElement, E2EPage, EventSpy } from '@stencil/core/testing';\nimport {\n setTestStrings,\n setup,\n dispatchEvent,\n promiseMap,\n testDeprecatedAriaLabel,\n getNestedElementProperty,\n} from '../helpers';\n\nexport type TectonWindow = typeof window & {\n resolveMenu: any;\n navigateTo: any;\n showOverpanel: any;\n};\n\ndescribe('q2-dropdown', () => {\n let page: E2EPage;\n let dropdown: E2EElement;\n let dropdownContainer: E2EElement;\n let popover: E2EElement;\n let dropdownButton: E2EElement;\n let buttonFocusSpy: EventSpy;\n let firstOption: E2EElement;\n let closeDropdown: E2EElement;\n\n it('renders base state', async () => {\n page = await setup({\n html: `\n <q2-dropdown>\n <q2-dropdown-item>Item Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n\n const dropdown = await page.find('q2-dropdown');\n expect(dropdown).not.toBeNull();\n\n const dropdownContainer = await page.find('q2-dropdown >>> click-elsewhere');\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n\n const dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n expect(dropdownButton).not.toHaveAttribute('fab');\n expect(dropdownButton).not.toHaveAttribute('intent');\n expect(dropdownButton).not.toHaveAttribute('active');\n expect(dropdownButton).not.toHaveAttribute('disabled');\n expect(await dropdownButton.getProperty('ariaExpanded')).toEqual('false');\n expect(await dropdownButton.getProperty('ariaHasPopup')).toEqual('menu');\n expect(await dropdownButton.getProperty('ariaLabel')).toBe(undefined);\n\n const dropdownButtonIcon = await page.find('q2-dropdown >>> q2-icon');\n expect(dropdownButtonIcon).toBeNull();\n\n const dropdownButtonText = await page.find('q2-dropdown >>> .dropdown-button-text');\n expect(dropdownButtonText).toBeNull();\n\n const dropdownSlot = await page.find('q2-dropdown >>> slot');\n expect(dropdownSlot).not.toBeNull();\n\n const dropdownCloseButton = await page.find('q2-dropdown >>> .close-dropdown');\n expect(dropdownCloseButton).toBeNull();\n });\n\n it('binds button props', async () => {\n page = await setup({\n html: `\n <q2-dropdown\n type=\"icon\"\n icon=\"options\"\n label=\"Label Text\"\n >\n <q2-dropdown-item>Item Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n\n const dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n expect(dropdownButton).not.toHaveAttribute('fab');\n expect(dropdownButton).not.toHaveAttribute('intent');\n expect(dropdownButton).not.toHaveAttribute('disabled');\n expect(dropdownButton).not.toHaveAttribute('aria-label');\n\n const dropdownButtonIcon = await page.find('q2-dropdown >>> q2-icon');\n expect(dropdownButtonIcon).not.toBeNull();\n expect(dropdownButtonIcon).toEqualAttribute('type', 'options');\n\n const dropdownButtonText = await page.find('q2-dropdown >>> .dropdown-button-text');\n expect(dropdownButtonText).not.toBeNull();\n expect(dropdownButtonText.innerText).toEqual('Label Text');\n\n const dropdown = await page.find('q2-dropdown');\n dropdown.setProperty('type', 'fab');\n await page.waitForChanges();\n\n expect(dropdownButton).not.toHaveAttribute('icon');\n expect(dropdownButton).toHaveAttribute('fab');\n\n dropdown.setProperty('type', 'primary');\n await page.waitForChanges();\n\n expect(dropdownButton).not.toHaveAttribute('fab');\n expect(dropdownButton).toHaveAttribute('intent');\n expect(dropdownButton).toEqualAttribute('intent', 'workflow-primary');\n\n dropdown.setProperty('type', 'secondary');\n await page.waitForChanges();\n\n expect(dropdownButton).toEqualAttribute('intent', 'workflow-secondary');\n\n dropdown.setProperty('type', 'foo');\n await page.waitForChanges();\n\n expect(dropdownButton).not.toHaveAttribute('icon');\n expect(dropdownButton).not.toHaveAttribute('fab');\n expect(dropdownButton).not.toHaveAttribute('intent');\n\n dropdown.setProperty('ariaLabel', 'Aria-Label Text');\n await page.waitForChanges();\n\n expect(dropdownButton).toHaveAttribute('hide-label');\n expect(dropdownButton).toEqualAttribute('label', 'Aria-Label Text');\n\n dropdown.setProperty('disabled', true);\n await page.waitForChanges();\n\n expect(dropdownButton).toHaveAttribute('disabled');\n });\n\n it('handles focus manipulation', async () => {\n page = await setup({\n html: `\n <q2-dropdown>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n\n const dropdownItems = await page.findAll('q2-dropdown q2-dropdown-item');\n const itemSpies = await promiseMap(dropdownItems, el => el.spyOnEvent('focus'));\n expect(itemSpies[0]).toHaveReceivedEventTimes(0);\n expect(itemSpies[1]).toHaveReceivedEventTimes(0);\n\n await dispatchEvent(page, ['q2-dropdown', '[test-id=\"dropdownButton\"]'], 'keydown', {\n key: 'ArrowDown',\n });\n expect(itemSpies[0]).toHaveReceivedEventTimes(1);\n\n await dispatchEvent(page, 'q2-dropdown q2-dropdown-item:first-of-type', 'keydown', {\n key: 'ArrowDown',\n bubbles: true,\n });\n expect(itemSpies[1]).toHaveReceivedEventTimes(1);\n\n await dispatchEvent(page, 'q2-dropdown q2-dropdown-item:last-of-type', 'keydown', {\n key: 'ArrowDown',\n bubbles: true,\n });\n expect(itemSpies[0]).toHaveReceivedEventTimes(2);\n\n await dispatchEvent(page, 'q2-dropdown q2-dropdown-item:first-of-type', 'keydown', {\n key: 'Down',\n bubbles: true,\n });\n expect(itemSpies[1]).toHaveReceivedEventTimes(2);\n\n await dispatchEvent(page, 'q2-dropdown q2-dropdown-item:last-of-type', 'keydown', {\n key: 'Down',\n bubbles: true,\n });\n expect(itemSpies[0]).toHaveReceivedEventTimes(3);\n\n await dispatchEvent(page, 'q2-dropdown q2-dropdown-item:first-of-type', 'keydown', {\n key: 'ArrowUp',\n bubbles: true,\n });\n expect(itemSpies[1]).toHaveReceivedEventTimes(3);\n\n await dispatchEvent(page, 'q2-dropdown q2-dropdown-item:last-of-type', 'keydown', {\n key: 'ArrowUp',\n bubbles: true,\n });\n expect(itemSpies[0]).toHaveReceivedEventTimes(4);\n\n await dispatchEvent(page, 'q2-dropdown q2-dropdown-item:first-of-type', 'keydown', {\n key: 'Up',\n bubbles: true,\n });\n expect(itemSpies[1]).toHaveReceivedEventTimes(4);\n\n await dispatchEvent(page, 'q2-dropdown q2-dropdown-item:last-of-type', 'keydown', {\n key: 'Up',\n bubbles: true,\n });\n expect(itemSpies[0]).toHaveReceivedEventTimes(5);\n });\n\n it('localizes label and aria-label', async () => {\n page = await setup({\n html: `\n <q2-dropdown>\n <q2-dropdown-item>Item Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n\n await setTestStrings(page, {\n 'dropdown.label': 'Label text',\n 'dropdown.ariaLabel': 'Aria-Label text',\n });\n\n const dropdown = await page.find('q2-dropdown');\n\n dropdown.setProperty('label', 'dropdown.label');\n await page.waitForChanges();\n\n const dropdownButtonText = await page.find('q2-dropdown >>> .dropdown-button-text');\n expect(dropdownButtonText).toEqualText('Label text');\n\n dropdown.setProperty('ariaLabel', 'dropdown.ariaLabel');\n await page.waitForChanges();\n\n const dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n expect(dropdownButton).toEqualAttribute('label', 'Aria-Label text');\n });\n\n it('regular dropdown with popover-direction=\"up\" opens upward', async () => {\n page = await setup({\n html: `\n <q2-dropdown popover-direction=\"up\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n const popover = await page.find('q2-dropdown >>> q2-popover');\n await dispatchEvent(page, ['q2-dropdown', '[test-id=\"dropdownButton\"]'], 'click');\n expect(await popover.getProperty('direction')).toEqual('up');\n });\n\n it('with popover-alignment=\"left\" opens left', async () => {\n page = await setup({\n html: `\n <q2-dropdown popover-alignment=\"left\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n const popover = await page.find('q2-dropdown >>> q2-popover');\n await dispatchEvent(page, ['q2-dropdown', '[test-id=\"dropdownButton\"]'], 'click');\n expect(await popover.getProperty('align')).toEqual('left');\n });\n\n it('if type custom, q2-btn icon attribute is false', async () => {\n page = await setup({\n html: `\n <q2-dropdown type=\"custom\">\n <q2-avatar slot=\"custom-dropdown-button\"></q2-avatar>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n const dropdownCustom = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n expect(dropdownCustom).not.toHaveAttribute('icon');\n });\n\n it('if type custom, show custom-dropdown-button slot', async () => {\n page = await setup({\n html: `\n <q2-dropdown type=\"custom\">\n <q2-avatar slot=\"custom-dropdown-button\"></q2-avatar>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n const dropdownCustom = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n expect(dropdownCustom).not.toHaveAttribute('icon');\n\n const dropdownSlot = await page.find('q2-dropdown >>> [test-id=\"dropdownCustom\"]');\n expect(dropdownSlot).not.toHaveClass('hidden');\n\n const dropdown = await page.find('q2-dropdown');\n dropdown.setAttribute('type', 'icon');\n await page.waitForChanges();\n\n const dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownCustom\"]');\n expect(dropdownButton).toHaveClass('hidden');\n });\n\n describe('focus transferring', () => {\n const html = `<q2-dropdown style=\"margin-top: 9999px\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 3 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 4 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 5 Text</q2-dropdown-item>\n </q2-dropdown>`;\n\n it('focuses when focus event dispatched ', async () => {\n page = await setup({ html });\n await dispatchEvent(page, ['q2-dropdown'], 'focus');\n const innerActiveTestId = async (page: E2EPage) => {\n return page.$eval('q2-dropdown', el => {\n return el.shadowRoot.querySelector('q2-btn').shadowRoot.activeElement?.getAttribute('test-id');\n });\n };\n expect(await innerActiveTestId(page)).toEqual('q2BtnInnerButton');\n });\n\n it('focuses when focus method called ', async () => {\n page = await setup({ html });\n const dropdown = await page.find('q2-dropdown');\n await dropdown.triggerEvent('focus');\n await page.waitForChanges();\n const innerActiveTestId = async (page: E2EPage) => {\n return page.$eval('q2-dropdown', el => {\n return el.shadowRoot.querySelector('q2-btn').shadowRoot.activeElement?.getAttribute('test-id');\n });\n };\n expect(await innerActiveTestId(page)).toEqual('q2BtnInnerButton');\n });\n });\n\n it.skip('adds menu items from the config', async () => {\n page = await setup({\n html: `\n <q2-dropdown name=\"testMenu\" pop-direction=\"up\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n\n const resolveMenu = jest.fn().mockImplementation(name => {\n expect(name).toEqual('testMenu');\n return [\n {\n itemLabel: 'testItem',\n action: 'navigateTo',\n featureName: 'testFeature',\n },\n ];\n });\n await page.exposeFunction('resolveMenu', resolveMenu);\n await page.evaluate(() => {\n (this as any).TectonElements.resolveMenu = resolveMenu;\n });\n expect(resolveMenu).toHaveBeenCalledTimes(0);\n\n const dropdown = await page.find('q2-dropdown');\n dropdown.setProperty('context', 'None');\n await page.waitForChanges();\n expect(resolveMenu).toHaveBeenCalledTimes(1);\n\n const dropdownItems = await page.findAll('q2-dropdown q2-dropdown-item');\n expect(dropdownItems.length).toEqual(3);\n });\n\n it.skip('replaces menu outlet items when the contextValue changes', async () => {\n page = await setup({\n html: `\n <q2-dropdown name=\"testMenu\" context=\"None\" contextValue=\"12345\" pop-direction=\"up\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n });\n\n it.skip('still works with keyboard functionality', async () => {\n page = await setup({\n html: `\n <q2-dropdown name=\"testMenu\" context=\"None\" contextValue=\"12345\" pop-direction=\"up\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n });\n\n describe('Props', () => {\n describe('open', () => {\n it('passes the open property to the popover and dispatches popoverStateChanged event', async () => {\n page = await setup({\n html: `\n <q2-dropdown>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n dropdown = await page.find('q2-dropdown');\n popover = await page.find('q2-dropdown >>> q2-popover');\n const popoverStateChangedSpy = await dropdown.spyOnEvent('popoverStateChanged');\n\n expect(await dropdown.getProperty('open')).toBeUndefined();\n expect(await popover.getProperty('open')).toBeUndefined();\n expect(popoverStateChangedSpy).toHaveReceivedEventTimes(0);\n\n await dropdown.setProperty('open', true);\n await page.waitForChanges();\n\n expect(await dropdown.getProperty('open')).toBe(true);\n expect(await popover.getProperty('open')).toBe(true);\n expect(popoverStateChangedSpy).toHaveReceivedEventTimes(1);\n });\n });\n\n describe('block', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-dropdown block>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n dropdown = await page.find('q2-dropdown');\n dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n popover = await page.find('q2-dropdown >>> q2-popover');\n });\n it('passes the block propery to the host, button, and popover elements', async () => {\n expect(await dropdown.getProperty('block')).toBe(true);\n expect(await dropdownButton.getProperty('block')).toBe(true);\n expect(await popover.getProperty('block')).toBe(true);\n });\n it('sets the display property to block on host and button elements', async () => {\n const dropdownStyles = await dropdown.getComputedStyle();\n const dropdownButtonStyles = await dropdownButton.getComputedStyle();\n\n expect(dropdownStyles.display).toBe('block');\n expect(dropdownButtonStyles.display).toBe('block');\n });\n });\n });\n\n describe('Events', () => {\n describe('popoverStateChanged', () => {\n it('updates open property and scrolls popover container to top', async () => {\n page = await setup({\n html: `\n <q2-dropdown open>\n ${Array.from({ length: 20 })\n .map(i => `<q2-dropdown-item>Item ${i} Text</q2-dropdown-item>`)\n .join('')}\n </q2-dropdown>\n `,\n });\n\n dropdown = await page.find('q2-dropdown');\n popover = await page.find('q2-dropdown >>> q2-popover');\n\n expect(await dropdown.getProperty('open')).toBe(true);\n expect(await popover.getProperty('open')).toBe(true);\n\n // Manually set the scrollTop to 100\n await popover.callMethod('scrollContainerTo', { top: 100 });\n await page.waitForChanges();\n\n // Ensure the scrollTop is 100\n let containerScrollTop = await getNestedElementProperty(\n page,\n ['q2-dropdown', 'q2-popover', '.container'],\n 'scrollTop'\n );\n expect(containerScrollTop).toEqual(100);\n\n // Close the popover\n await page.$eval('q2-dropdown', el =>\n el.dispatchEvent(new CustomEvent('popoverStateChanged', { detail: { open: false } }))\n );\n\n expect(await dropdown.getProperty('open')).toBe(false);\n expect(await popover.getProperty('open')).toBe(false);\n\n // Ensure the scrollTop is reset to 0\n containerScrollTop = await getNestedElementProperty(\n page,\n ['q2-dropdown', 'q2-popover', '.container'],\n 'scrollTop'\n );\n expect(containerScrollTop).toEqual(0);\n });\n });\n });\n\n describe('Mouse', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-dropdown icon=\"options\">\n <q2-dropdown-item test-id=\"option-1\">Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item test-id=\"option-2\">Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n dropdown = await page.find('q2-dropdown');\n expect(await dropdown.getProperty('open')).toBeUndefined();\n\n dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n buttonFocusSpy = await dropdownButton.spyOnEvent('focus');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(0);\n\n dropdownContainer = await page.find('q2-dropdown >>> click-elsewhere');\n expect(dropdown).not.toHaveAttribute('open');\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n\n firstOption = await page.find('q2-dropdown-item:first-of-type');\n });\n\n it('opens and closes the dropdown', async () => {\n await dropdownButton.click();\n\n expect(dropdown).toHaveAttribute('open');\n expect(dropdownContainer).toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(1);\n\n buttonFocusSpy.events = [];\n\n await firstOption.click();\n expect(dropdown).not.toHaveAttribute('open');\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n\n expect(buttonFocusSpy).toHaveReceivedEventTimes(1);\n\n buttonFocusSpy.events = [];\n\n await dispatchEvent(page, ['q2-dropdown', '[test-id=\"dropdownButton\"]'], 'click');\n expect(dropdownContainer).toHaveClass('dropdown-open');\n\n expect(buttonFocusSpy).toHaveReceivedEventTimes(0);\n\n buttonFocusSpy.events = [];\n\n closeDropdown = await page.find('q2-dropdown >>> .close-dropdown');\n await closeDropdown.focus();\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n\n expect(buttonFocusSpy).toHaveReceivedEventTimes(0);\n });\n });\n\n describe('Keyboard', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-dropdown>\n <q2-dropdown-item test-id=\"option-1\">Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item test-id=\"option-2\">Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n dropdown = await page.find('q2-dropdown');\n expect(await dropdown.getProperty('open')).toBeUndefined();\n\n dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n buttonFocusSpy = await dropdownButton.spyOnEvent('focus');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(0);\n\n dropdownContainer = await page.find('q2-dropdown >>> click-elsewhere');\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n });\n\n it('opens the popover and focuses last item on ArrowUp', async () => {\n await dropdownButton.press('ArrowUp');\n await page.waitForChanges();\n\n expect(dropdownContainer).toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(2);\n });\n\n it('opens the popover and focuses first item on ArrowDown', async () => {\n await dropdownButton.press('ArrowDown');\n await page.waitForChanges();\n\n expect(dropdownContainer).toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(2);\n });\n\n describe('when open', () => {\n beforeEach(async () => {\n dropdown.setProperty('open', true);\n await page.waitForChanges();\n expect(dropdownContainer).toHaveClass('dropdown-open');\n buttonFocusSpy.events = [];\n });\n\n it('closes the popover and focuses toggle button on Escape', async () => {\n await dropdownButton.press('Escape');\n await page.waitForChanges();\n\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(2);\n });\n\n it('does not close or escape the popover on Tab', async () => {\n await dropdownButton.press('ArrowDown');\n await dropdownButton.press('Tab');\n await page.waitForChanges();\n\n expect(dropdownContainer).toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(4);\n });\n });\n });\n\n describe('Deprecations', () => {\n it('handles deprecated `popDirection` prop', async () => {\n page = await setup({\n html: `\n <q2-dropdown pop-direction=\"up\">\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n await page.waitForChanges();\n dropdown = await page.find('q2-dropdown');\n expect(await dropdown.getProperty('popDirection')).toEqual('up');\n expect(await dropdown.getProperty('popoverDirection')).toEqual('up');\n\n await dropdown.setProperty('popDirection', 'down');\n await page.waitForChanges();\n\n expect(await dropdown.getProperty('popDirection')).toEqual('down');\n expect(await dropdown.getProperty('popoverDirection')).toEqual('down');\n });\n\n it('handles deprecated `ariaLabel` prop', async () => {\n const label = 'My Label';\n page = await setup({\n html: `\n <q2-dropdown aria-label=\"${label}\">\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n await page.waitForChanges();\n await testDeprecatedAriaLabel(await page.find('q2-dropdown'), label);\n const innerButton = await page.find('q2-dropdown >>> q2-btn');\n expect(innerButton).toEqualAttribute('label', label);\n expect(innerButton).toHaveAttribute('hide-label');\n });\n\n it('handles deprecated `alignment` prop', async () => {\n page = await setup({\n html: `\n <q2-dropdown alignment=\"left\">\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n await page.waitForChanges();\n dropdown = await page.find('q2-dropdown');\n expect(await dropdown.getProperty('alignment')).toEqual('left');\n expect(await dropdown.getProperty('popoverAlignment')).toEqual('left');\n\n await dropdown.setProperty('alignment', 'right');\n await page.waitForChanges();\n\n expect(await dropdown.getProperty('alignment')).toEqual('right');\n expect(await dropdown.getProperty('popoverAlignment')).toEqual('right');\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"q2-dropdown-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-dropdown-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EElement, E2EPage, EventSpy } from '@stencil/core/testing';\nimport {\n setTestStrings,\n setup,\n dispatchEvent,\n promiseMap,\n testDeprecatedAriaLabel,\n getNestedElementProperty,\n getListOfStyleCompilationIssues,\n} from '../helpers';\n\nexport type TectonWindow = typeof window & {\n resolveMenu: any;\n navigateTo: any;\n showOverpanel: any;\n};\n\ndescribe('q2-dropdown', () => {\n let page: E2EPage;\n let dropdown: E2EElement;\n let dropdownContainer: E2EElement;\n let popover: E2EElement;\n let dropdownButton: E2EElement;\n let buttonFocusSpy: EventSpy;\n let firstOption: E2EElement;\n let closeDropdown: E2EElement;\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-dropdown></q2-dropdown>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-dropdown')).toHaveLength(0);\n });\n\n it('renders base state', async () => {\n page = await setup({\n html: `\n <q2-dropdown>\n <q2-dropdown-item>Item Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n\n const dropdown = await page.find('q2-dropdown');\n expect(dropdown).not.toBeNull();\n\n const dropdownContainer = await page.find('q2-dropdown >>> click-elsewhere');\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n\n const dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n expect(dropdownButton).not.toHaveAttribute('fab');\n expect(dropdownButton).not.toHaveAttribute('intent');\n expect(dropdownButton).not.toHaveAttribute('active');\n expect(dropdownButton).not.toHaveAttribute('disabled');\n expect(await dropdownButton.getProperty('ariaExpanded')).toEqual('false');\n expect(await dropdownButton.getProperty('ariaHasPopup')).toEqual('menu');\n expect(await dropdownButton.getProperty('ariaLabel')).toBe(undefined);\n\n const dropdownButtonIcon = await page.find('q2-dropdown >>> q2-icon');\n expect(dropdownButtonIcon).toBeNull();\n\n const dropdownButtonText = await page.find('q2-dropdown >>> .dropdown-button-text');\n expect(dropdownButtonText).toBeNull();\n\n const dropdownSlot = await page.find('q2-dropdown >>> slot');\n expect(dropdownSlot).not.toBeNull();\n\n const dropdownCloseButton = await page.find('q2-dropdown >>> .close-dropdown');\n expect(dropdownCloseButton).toBeNull();\n });\n\n it('binds button props', async () => {\n page = await setup({\n html: `\n <q2-dropdown\n type=\"icon\"\n icon=\"options\"\n label=\"Label Text\"\n >\n <q2-dropdown-item>Item Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n\n const dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n expect(dropdownButton).not.toHaveAttribute('fab');\n expect(dropdownButton).not.toHaveAttribute('intent');\n expect(dropdownButton).not.toHaveAttribute('disabled');\n expect(dropdownButton).not.toHaveAttribute('aria-label');\n\n const dropdownButtonIcon = await page.find('q2-dropdown >>> q2-icon');\n expect(dropdownButtonIcon).not.toBeNull();\n expect(dropdownButtonIcon).toEqualAttribute('type', 'options');\n\n const dropdownButtonText = await page.find('q2-dropdown >>> .dropdown-button-text');\n expect(dropdownButtonText).not.toBeNull();\n expect(dropdownButtonText.innerText).toEqual('Label Text');\n\n const dropdown = await page.find('q2-dropdown');\n dropdown.setProperty('type', 'fab');\n await page.waitForChanges();\n\n expect(dropdownButton).not.toHaveAttribute('icon');\n expect(dropdownButton).toHaveAttribute('fab');\n\n dropdown.setProperty('type', 'primary');\n await page.waitForChanges();\n\n expect(dropdownButton).not.toHaveAttribute('fab');\n expect(dropdownButton).toHaveAttribute('intent');\n expect(dropdownButton).toEqualAttribute('intent', 'workflow-primary');\n\n dropdown.setProperty('type', 'secondary');\n await page.waitForChanges();\n\n expect(dropdownButton).toEqualAttribute('intent', 'workflow-secondary');\n\n dropdown.setProperty('type', 'foo');\n await page.waitForChanges();\n\n expect(dropdownButton).not.toHaveAttribute('icon');\n expect(dropdownButton).not.toHaveAttribute('fab');\n expect(dropdownButton).not.toHaveAttribute('intent');\n\n dropdown.setProperty('ariaLabel', 'Aria-Label Text');\n await page.waitForChanges();\n\n expect(dropdownButton).toHaveAttribute('hide-label');\n expect(dropdownButton).toEqualAttribute('label', 'Aria-Label Text');\n\n dropdown.setProperty('disabled', true);\n await page.waitForChanges();\n\n expect(dropdownButton).toHaveAttribute('disabled');\n });\n\n it('handles focus manipulation', async () => {\n page = await setup({\n html: `\n <q2-dropdown>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n\n const dropdownItems = await page.findAll('q2-dropdown q2-dropdown-item');\n const itemSpies = await promiseMap(dropdownItems, el => el.spyOnEvent('focus'));\n expect(itemSpies[0]).toHaveReceivedEventTimes(0);\n expect(itemSpies[1]).toHaveReceivedEventTimes(0);\n\n await dispatchEvent(page, ['q2-dropdown', '[test-id=\"dropdownButton\"]'], 'keydown', {\n key: 'ArrowDown',\n });\n expect(itemSpies[0]).toHaveReceivedEventTimes(1);\n\n await dispatchEvent(page, 'q2-dropdown q2-dropdown-item:first-of-type', 'keydown', {\n key: 'ArrowDown',\n bubbles: true,\n });\n expect(itemSpies[1]).toHaveReceivedEventTimes(1);\n\n await dispatchEvent(page, 'q2-dropdown q2-dropdown-item:last-of-type', 'keydown', {\n key: 'ArrowDown',\n bubbles: true,\n });\n expect(itemSpies[0]).toHaveReceivedEventTimes(2);\n\n await dispatchEvent(page, 'q2-dropdown q2-dropdown-item:first-of-type', 'keydown', {\n key: 'Down',\n bubbles: true,\n });\n expect(itemSpies[1]).toHaveReceivedEventTimes(2);\n\n await dispatchEvent(page, 'q2-dropdown q2-dropdown-item:last-of-type', 'keydown', {\n key: 'Down',\n bubbles: true,\n });\n expect(itemSpies[0]).toHaveReceivedEventTimes(3);\n\n await dispatchEvent(page, 'q2-dropdown q2-dropdown-item:first-of-type', 'keydown', {\n key: 'ArrowUp',\n bubbles: true,\n });\n expect(itemSpies[1]).toHaveReceivedEventTimes(3);\n\n await dispatchEvent(page, 'q2-dropdown q2-dropdown-item:last-of-type', 'keydown', {\n key: 'ArrowUp',\n bubbles: true,\n });\n expect(itemSpies[0]).toHaveReceivedEventTimes(4);\n\n await dispatchEvent(page, 'q2-dropdown q2-dropdown-item:first-of-type', 'keydown', {\n key: 'Up',\n bubbles: true,\n });\n expect(itemSpies[1]).toHaveReceivedEventTimes(4);\n\n await dispatchEvent(page, 'q2-dropdown q2-dropdown-item:last-of-type', 'keydown', {\n key: 'Up',\n bubbles: true,\n });\n expect(itemSpies[0]).toHaveReceivedEventTimes(5);\n });\n\n it('localizes label and aria-label', async () => {\n page = await setup({\n html: `\n <q2-dropdown>\n <q2-dropdown-item>Item Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n\n await setTestStrings(page, {\n 'dropdown.label': 'Label text',\n 'dropdown.ariaLabel': 'Aria-Label text',\n });\n\n const dropdown = await page.find('q2-dropdown');\n\n dropdown.setProperty('label', 'dropdown.label');\n await page.waitForChanges();\n\n const dropdownButtonText = await page.find('q2-dropdown >>> .dropdown-button-text');\n expect(dropdownButtonText).toEqualText('Label text');\n\n dropdown.setProperty('ariaLabel', 'dropdown.ariaLabel');\n await page.waitForChanges();\n\n const dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n expect(dropdownButton).toEqualAttribute('label', 'Aria-Label text');\n });\n\n it('regular dropdown with popover-direction=\"up\" opens upward', async () => {\n page = await setup({\n html: `\n <q2-dropdown popover-direction=\"up\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n const popover = await page.find('q2-dropdown >>> q2-popover');\n await dispatchEvent(page, ['q2-dropdown', '[test-id=\"dropdownButton\"]'], 'click');\n expect(await popover.getProperty('direction')).toEqual('up');\n });\n\n it('with popover-alignment=\"left\" opens left', async () => {\n page = await setup({\n html: `\n <q2-dropdown popover-alignment=\"left\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n const popover = await page.find('q2-dropdown >>> q2-popover');\n await dispatchEvent(page, ['q2-dropdown', '[test-id=\"dropdownButton\"]'], 'click');\n expect(await popover.getProperty('align')).toEqual('left');\n });\n\n it('if type custom, q2-btn icon attribute is false', async () => {\n page = await setup({\n html: `\n <q2-dropdown type=\"custom\">\n <q2-avatar slot=\"custom-dropdown-button\"></q2-avatar>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n const dropdownCustom = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n expect(dropdownCustom).not.toHaveAttribute('icon');\n });\n\n it('if type custom, show custom-dropdown-button slot', async () => {\n page = await setup({\n html: `\n <q2-dropdown type=\"custom\">\n <q2-avatar slot=\"custom-dropdown-button\"></q2-avatar>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n const dropdownCustom = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n expect(dropdownCustom).not.toHaveAttribute('icon');\n\n const dropdownSlot = await page.find('q2-dropdown >>> [test-id=\"dropdownCustom\"]');\n expect(dropdownSlot).not.toHaveClass('hidden');\n\n const dropdown = await page.find('q2-dropdown');\n dropdown.setAttribute('type', 'icon');\n await page.waitForChanges();\n\n const dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownCustom\"]');\n expect(dropdownButton).toHaveClass('hidden');\n });\n\n describe('focus transferring', () => {\n const html = `<q2-dropdown style=\"margin-top: 9999px\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 3 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 4 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 5 Text</q2-dropdown-item>\n </q2-dropdown>`;\n\n it('focuses when focus event dispatched ', async () => {\n page = await setup({ html });\n await dispatchEvent(page, ['q2-dropdown'], 'focus');\n const innerActiveTestId = async (page: E2EPage) => {\n return page.$eval('q2-dropdown', el => {\n return el.shadowRoot.querySelector('q2-btn').shadowRoot.activeElement?.getAttribute('test-id');\n });\n };\n expect(await innerActiveTestId(page)).toEqual('q2BtnInnerButton');\n });\n\n it('focuses when focus method called ', async () => {\n page = await setup({ html });\n const dropdown = await page.find('q2-dropdown');\n await dropdown.triggerEvent('focus');\n await page.waitForChanges();\n const innerActiveTestId = async (page: E2EPage) => {\n return page.$eval('q2-dropdown', el => {\n return el.shadowRoot.querySelector('q2-btn').shadowRoot.activeElement?.getAttribute('test-id');\n });\n };\n expect(await innerActiveTestId(page)).toEqual('q2BtnInnerButton');\n });\n });\n\n it.skip('adds menu items from the config', async () => {\n page = await setup({\n html: `\n <q2-dropdown name=\"testMenu\" pop-direction=\"up\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n\n const resolveMenu = jest.fn().mockImplementation(name => {\n expect(name).toEqual('testMenu');\n return [\n {\n itemLabel: 'testItem',\n action: 'navigateTo',\n featureName: 'testFeature',\n },\n ];\n });\n await page.exposeFunction('resolveMenu', resolveMenu);\n await page.evaluate(() => {\n (this as any).TectonElements.resolveMenu = resolveMenu;\n });\n expect(resolveMenu).toHaveBeenCalledTimes(0);\n\n const dropdown = await page.find('q2-dropdown');\n dropdown.setProperty('context', 'None');\n await page.waitForChanges();\n expect(resolveMenu).toHaveBeenCalledTimes(1);\n\n const dropdownItems = await page.findAll('q2-dropdown q2-dropdown-item');\n expect(dropdownItems.length).toEqual(3);\n });\n\n it.skip('replaces menu outlet items when the contextValue changes', async () => {\n page = await setup({\n html: `\n <q2-dropdown name=\"testMenu\" context=\"None\" contextValue=\"12345\" pop-direction=\"up\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n });\n\n it.skip('still works with keyboard functionality', async () => {\n page = await setup({\n html: `\n <q2-dropdown name=\"testMenu\" context=\"None\" contextValue=\"12345\" pop-direction=\"up\">\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n });\n\n describe('Props', () => {\n describe('open', () => {\n it('passes the open property to the popover and dispatches popoverStateChanged event', async () => {\n page = await setup({\n html: `\n <q2-dropdown>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n dropdown = await page.find('q2-dropdown');\n popover = await page.find('q2-dropdown >>> q2-popover');\n const popoverStateChangedSpy = await dropdown.spyOnEvent('popoverStateChanged');\n\n expect(await dropdown.getProperty('open')).toBeUndefined();\n expect(await popover.getProperty('open')).toBeUndefined();\n expect(popoverStateChangedSpy).toHaveReceivedEventTimes(0);\n\n await dropdown.setProperty('open', true);\n await page.waitForChanges();\n\n expect(await dropdown.getProperty('open')).toBe(true);\n expect(await popover.getProperty('open')).toBe(true);\n expect(popoverStateChangedSpy).toHaveReceivedEventTimes(1);\n });\n });\n\n describe('block', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-dropdown block>\n <q2-dropdown-item>Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item>Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n dropdown = await page.find('q2-dropdown');\n dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n popover = await page.find('q2-dropdown >>> q2-popover');\n });\n it('passes the block propery to the host, button, and popover elements', async () => {\n expect(await dropdown.getProperty('block')).toBe(true);\n expect(await dropdownButton.getProperty('block')).toBe(true);\n expect(await popover.getProperty('block')).toBe(true);\n });\n it('sets the display property to block on host and button elements', async () => {\n const dropdownStyles = await dropdown.getComputedStyle();\n const dropdownButtonStyles = await dropdownButton.getComputedStyle();\n\n expect(dropdownStyles.display).toBe('block');\n expect(dropdownButtonStyles.display).toBe('block');\n });\n });\n });\n\n describe('Events', () => {\n describe('popoverStateChanged', () => {\n it('updates open property and scrolls popover container to top', async () => {\n page = await setup({\n html: `\n <q2-dropdown open>\n ${Array.from({ length: 20 })\n .map(i => `<q2-dropdown-item>Item ${i} Text</q2-dropdown-item>`)\n .join('')}\n </q2-dropdown>\n `,\n });\n\n dropdown = await page.find('q2-dropdown');\n popover = await page.find('q2-dropdown >>> q2-popover');\n\n expect(await dropdown.getProperty('open')).toBe(true);\n expect(await popover.getProperty('open')).toBe(true);\n\n // Manually set the scrollTop to 100\n await popover.callMethod('scrollContainerTo', { top: 100 });\n await page.waitForChanges();\n\n // Ensure the scrollTop is 100\n let containerScrollTop = await getNestedElementProperty(\n page,\n ['q2-dropdown', 'q2-popover', '.container'],\n 'scrollTop'\n );\n expect(containerScrollTop).toEqual(100);\n\n // Close the popover\n await page.$eval('q2-dropdown', el =>\n el.dispatchEvent(new CustomEvent('popoverStateChanged', { detail: { open: false } }))\n );\n\n expect(await dropdown.getProperty('open')).toBe(false);\n expect(await popover.getProperty('open')).toBe(false);\n\n // Ensure the scrollTop is reset to 0\n containerScrollTop = await getNestedElementProperty(\n page,\n ['q2-dropdown', 'q2-popover', '.container'],\n 'scrollTop'\n );\n expect(containerScrollTop).toEqual(0);\n });\n });\n });\n\n describe('Mouse', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-dropdown icon=\"options\">\n <q2-dropdown-item test-id=\"option-1\">Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item test-id=\"option-2\">Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n dropdown = await page.find('q2-dropdown');\n expect(await dropdown.getProperty('open')).toBeUndefined();\n\n dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n buttonFocusSpy = await dropdownButton.spyOnEvent('focus');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(0);\n\n dropdownContainer = await page.find('q2-dropdown >>> click-elsewhere');\n expect(dropdown).not.toHaveAttribute('open');\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n\n firstOption = await page.find('q2-dropdown-item:first-of-type');\n });\n\n it('opens and closes the dropdown', async () => {\n await dropdownButton.click();\n\n expect(dropdown).toHaveAttribute('open');\n expect(dropdownContainer).toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(1);\n\n buttonFocusSpy.events = [];\n\n await firstOption.click();\n expect(dropdown).not.toHaveAttribute('open');\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n\n expect(buttonFocusSpy).toHaveReceivedEventTimes(1);\n\n buttonFocusSpy.events = [];\n\n await dispatchEvent(page, ['q2-dropdown', '[test-id=\"dropdownButton\"]'], 'click');\n expect(dropdownContainer).toHaveClass('dropdown-open');\n\n expect(buttonFocusSpy).toHaveReceivedEventTimes(0);\n\n buttonFocusSpy.events = [];\n\n closeDropdown = await page.find('q2-dropdown >>> .close-dropdown');\n await closeDropdown.focus();\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n\n expect(buttonFocusSpy).toHaveReceivedEventTimes(0);\n });\n });\n\n describe('Keyboard', () => {\n beforeEach(async () => {\n page = await setup({\n html: `\n <q2-dropdown>\n <q2-dropdown-item test-id=\"option-1\">Item 1 Text</q2-dropdown-item>\n <q2-dropdown-item test-id=\"option-2\">Item 2 Text</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n dropdown = await page.find('q2-dropdown');\n expect(await dropdown.getProperty('open')).toBeUndefined();\n\n dropdownButton = await page.find('q2-dropdown >>> [test-id=\"dropdownButton\"]');\n buttonFocusSpy = await dropdownButton.spyOnEvent('focus');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(0);\n\n dropdownContainer = await page.find('q2-dropdown >>> click-elsewhere');\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n });\n\n it('opens the popover and focuses last item on ArrowUp', async () => {\n await dropdownButton.press('ArrowUp');\n await page.waitForChanges();\n\n expect(dropdownContainer).toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(2);\n });\n\n it('opens the popover and focuses first item on ArrowDown', async () => {\n await dropdownButton.press('ArrowDown');\n await page.waitForChanges();\n\n expect(dropdownContainer).toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(2);\n });\n\n describe('when open', () => {\n beforeEach(async () => {\n dropdown.setProperty('open', true);\n await page.waitForChanges();\n expect(dropdownContainer).toHaveClass('dropdown-open');\n buttonFocusSpy.events = [];\n });\n\n it('closes the popover and focuses toggle button on Escape', async () => {\n await dropdownButton.press('Escape');\n await page.waitForChanges();\n\n expect(dropdownContainer).not.toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(2);\n });\n\n it('does not close or escape the popover on Tab', async () => {\n await dropdownButton.press('ArrowDown');\n await dropdownButton.press('Tab');\n await page.waitForChanges();\n\n expect(dropdownContainer).toHaveClass('dropdown-open');\n expect(buttonFocusSpy).toHaveReceivedEventTimes(4);\n });\n });\n });\n\n describe('Deprecations', () => {\n it('handles deprecated `popDirection` prop', async () => {\n page = await setup({\n html: `\n <q2-dropdown pop-direction=\"up\">\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n await page.waitForChanges();\n dropdown = await page.find('q2-dropdown');\n expect(await dropdown.getProperty('popDirection')).toEqual('up');\n expect(await dropdown.getProperty('popoverDirection')).toEqual('up');\n\n await dropdown.setProperty('popDirection', 'down');\n await page.waitForChanges();\n\n expect(await dropdown.getProperty('popDirection')).toEqual('down');\n expect(await dropdown.getProperty('popoverDirection')).toEqual('down');\n });\n\n it('handles deprecated `ariaLabel` prop', async () => {\n const label = 'My Label';\n page = await setup({\n html: `\n <q2-dropdown aria-label=\"${label}\">\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n await page.waitForChanges();\n await testDeprecatedAriaLabel(await page.find('q2-dropdown'), label);\n const innerButton = await page.find('q2-dropdown >>> q2-btn');\n expect(innerButton).toEqualAttribute('label', label);\n expect(innerButton).toHaveAttribute('hide-label');\n });\n\n it('handles deprecated `alignment` prop', async () => {\n page = await setup({\n html: `\n <q2-dropdown alignment=\"left\">\n <q2-dropdown-item>Item 1</q2-dropdown-item>\n <q2-dropdown-item>Item 2</q2-dropdown-item>\n </q2-dropdown>\n `,\n });\n await page.waitForChanges();\n dropdown = await page.find('q2-dropdown');\n expect(await dropdown.getProperty('alignment')).toEqual('left');\n expect(await dropdown.getProperty('popoverAlignment')).toEqual('left');\n\n await dropdown.setProperty('alignment', 'right');\n await page.waitForChanges();\n\n expect(await dropdown.getProperty('alignment')).toEqual('right');\n expect(await dropdown.getProperty('popoverAlignment')).toEqual('right');\n });\n });\n});\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { setTestStrings, setup, dispatchEvent, getActiveElementTestId, testDeprecatedAriaLabel, getNestedElementStyle, getNestedElementProperty, } from "../helpers";
|
|
1
|
+
import { setTestStrings, setup, dispatchEvent, getActiveElementTestId, testDeprecatedAriaLabel, getNestedElementStyle, getNestedElementProperty, getListOfStyleCompilationIssues, } from "../helpers";
|
|
2
2
|
describe('q2-editable-field', () => {
|
|
3
3
|
let page;
|
|
4
4
|
let editableField;
|
|
@@ -6,6 +6,10 @@ describe('q2-editable-field', () => {
|
|
|
6
6
|
let editButton;
|
|
7
7
|
let saveButton;
|
|
8
8
|
let cancelButton;
|
|
9
|
+
it('properly compiles CSS vars and functions', async () => {
|
|
10
|
+
const page = await setup({ html: '<q2-editable-field></q2-editable-field>' });
|
|
11
|
+
expect(await getListOfStyleCompilationIssues(page, 'q2-editable-field')).toHaveLength(0);
|
|
12
|
+
});
|
|
9
13
|
it('should render the component in the dom', async () => {
|
|
10
14
|
page = await setup({ html: `<q2-editable-field></q2-editable-field>` });
|
|
11
15
|
editableField = await page.find('q2-editable-field');
|