q2-tecton-elements 1.47.0 → 1.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/dist/cjs/click-elsewhere_2.cjs.entry.js +43 -7
  2. package/dist/cjs/click-elsewhere_2.cjs.entry.js.map +1 -1
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/q2-chart-donut.cjs.entry.js +7 -4
  5. package/dist/cjs/q2-chart-donut.cjs.entry.js.map +1 -1
  6. package/dist/cjs/q2-data-table.cjs.entry.js +8 -5
  7. package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
  8. package/dist/cjs/q2-dropdown-item.cjs.entry.js +13 -4
  9. package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
  10. package/dist/cjs/q2-editable-field.cjs.entry.js +36 -27
  11. package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
  12. package/dist/cjs/q2-input.cjs.entry.js +2 -2
  13. package/dist/cjs/q2-input.cjs.entry.js.map +1 -1
  14. package/dist/cjs/q2-option-list.cjs.entry.js +2 -3
  15. package/dist/cjs/q2-option-list.cjs.entry.js.map +1 -1
  16. package/dist/cjs/q2-relative-time.cjs.entry.js +34 -17
  17. package/dist/cjs/q2-relative-time.cjs.entry.js.map +1 -1
  18. package/dist/cjs/q2-section.cjs.entry.js +2 -2
  19. package/dist/cjs/q2-section.cjs.entry.js.map +1 -1
  20. package/dist/cjs/q2-select.cjs.entry.js +7 -2
  21. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  22. package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
  23. package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
  24. package/dist/cjs/q2-tab-container.cjs.entry.js +1 -1
  25. package/dist/cjs/q2-tab-container.cjs.entry.js.map +1 -1
  26. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  27. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +7 -4
  28. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
  29. package/dist/collection/components/q2-data-table/q2-data-table.css +15 -1
  30. package/dist/collection/components/q2-data-table/q2-data-table.js +28 -8
  31. package/dist/collection/components/q2-data-table/q2-data-table.js.map +1 -1
  32. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js +22 -5
  33. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.js.map +1 -1
  34. package/dist/collection/components/q2-editable-field/q2-editable-field.js +41 -29
  35. package/dist/collection/components/q2-editable-field/q2-editable-field.js.map +1 -1
  36. package/dist/collection/components/q2-input/q2-input.js +22 -19
  37. package/dist/collection/components/q2-input/q2-input.js.map +1 -1
  38. package/dist/collection/components/q2-option-list/q2-option-list.js +2 -3
  39. package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
  40. package/dist/collection/components/q2-popover/q2-popover.js +43 -7
  41. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  42. package/dist/collection/components/q2-relative-time/q2-relative-time.js +79 -25
  43. package/dist/collection/components/q2-relative-time/q2-relative-time.js.map +1 -1
  44. package/dist/collection/components/q2-section/q2-section.js +7 -4
  45. package/dist/collection/components/q2-section/q2-section.js.map +1 -1
  46. package/dist/collection/components/q2-select/q2-select.js +7 -2
  47. package/dist/collection/components/q2-select/q2-select.js.map +1 -1
  48. package/dist/collection/components/q2-stepper/q2-stepper.js +2 -2
  49. package/dist/collection/components/q2-stepper/q2-stepper.js.map +1 -1
  50. package/dist/collection/components/q2-tab-container/q2-tab-container.css +2 -1
  51. package/dist/components/q2-chart-donut.js +7 -4
  52. package/dist/components/q2-chart-donut.js.map +1 -1
  53. package/dist/components/q2-data-table.js +10 -6
  54. package/dist/components/q2-data-table.js.map +1 -1
  55. package/dist/components/q2-dropdown-item2.js +16 -6
  56. package/dist/components/q2-dropdown-item2.js.map +1 -1
  57. package/dist/components/q2-editable-field.js +37 -28
  58. package/dist/components/q2-editable-field.js.map +1 -1
  59. package/dist/components/q2-input2.js +3 -3
  60. package/dist/components/q2-input2.js.map +1 -1
  61. package/dist/components/q2-option-list2.js +2 -3
  62. package/dist/components/q2-option-list2.js.map +1 -1
  63. package/dist/components/q2-popover2.js +43 -7
  64. package/dist/components/q2-popover2.js.map +1 -1
  65. package/dist/components/q2-relative-time.js +37 -18
  66. package/dist/components/q2-relative-time.js.map +1 -1
  67. package/dist/components/q2-section.js +2 -2
  68. package/dist/components/q2-section.js.map +1 -1
  69. package/dist/components/q2-select2.js +7 -2
  70. package/dist/components/q2-select2.js.map +1 -1
  71. package/dist/components/q2-stepper.js +2 -2
  72. package/dist/components/q2-stepper.js.map +1 -1
  73. package/dist/components/q2-tab-container.js +1 -1
  74. package/dist/components/q2-tab-container.js.map +1 -1
  75. package/dist/esm/click-elsewhere_2.entry.js +43 -7
  76. package/dist/esm/click-elsewhere_2.entry.js.map +1 -1
  77. package/dist/esm/loader.js +1 -1
  78. package/dist/esm/q2-chart-donut.entry.js +7 -4
  79. package/dist/esm/q2-chart-donut.entry.js.map +1 -1
  80. package/dist/esm/q2-data-table.entry.js +8 -5
  81. package/dist/esm/q2-data-table.entry.js.map +1 -1
  82. package/dist/esm/q2-dropdown-item.entry.js +14 -5
  83. package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
  84. package/dist/esm/q2-editable-field.entry.js +37 -28
  85. package/dist/esm/q2-editable-field.entry.js.map +1 -1
  86. package/dist/esm/q2-input.entry.js +2 -2
  87. package/dist/esm/q2-input.entry.js.map +1 -1
  88. package/dist/esm/q2-option-list.entry.js +2 -3
  89. package/dist/esm/q2-option-list.entry.js.map +1 -1
  90. package/dist/esm/q2-relative-time.entry.js +34 -17
  91. package/dist/esm/q2-relative-time.entry.js.map +1 -1
  92. package/dist/esm/q2-section.entry.js +2 -2
  93. package/dist/esm/q2-section.entry.js.map +1 -1
  94. package/dist/esm/q2-select.entry.js +7 -2
  95. package/dist/esm/q2-select.entry.js.map +1 -1
  96. package/dist/esm/q2-stepper.entry.js +2 -2
  97. package/dist/esm/q2-stepper.entry.js.map +1 -1
  98. package/dist/esm/q2-tab-container.entry.js +1 -1
  99. package/dist/esm/q2-tab-container.entry.js.map +1 -1
  100. package/dist/esm/q2-tecton-elements.js +1 -1
  101. package/dist/q2-tecton-elements/p-11982614.entry.js +2 -0
  102. package/dist/q2-tecton-elements/p-11982614.entry.js.map +1 -0
  103. package/dist/q2-tecton-elements/{p-e25194ce.entry.js → p-24719520.entry.js} +2 -2
  104. package/dist/q2-tecton-elements/p-24719520.entry.js.map +1 -0
  105. package/dist/q2-tecton-elements/p-30296b0e.entry.js +2 -0
  106. package/dist/q2-tecton-elements/p-30296b0e.entry.js.map +1 -0
  107. package/dist/q2-tecton-elements/{p-b849365e.entry.js → p-32b56406.entry.js} +2 -2
  108. package/dist/q2-tecton-elements/{p-b849365e.entry.js.map → p-32b56406.entry.js.map} +1 -1
  109. package/dist/q2-tecton-elements/p-43236cac.entry.js +2 -0
  110. package/dist/q2-tecton-elements/p-43236cac.entry.js.map +1 -0
  111. package/dist/q2-tecton-elements/{p-6f2de185.entry.js → p-4f7e6e79.entry.js} +2 -2
  112. package/dist/q2-tecton-elements/p-4f7e6e79.entry.js.map +1 -0
  113. package/dist/q2-tecton-elements/{p-a3d58a50.entry.js → p-56dd051a.entry.js} +2 -2
  114. package/dist/q2-tecton-elements/p-56dd051a.entry.js.map +1 -0
  115. package/dist/q2-tecton-elements/p-6986a60e.entry.js +2 -0
  116. package/dist/q2-tecton-elements/{p-6eac40be.entry.js.map → p-6986a60e.entry.js.map} +1 -1
  117. package/dist/q2-tecton-elements/{p-774975fa.entry.js → p-6fdda37e.entry.js} +2 -2
  118. package/dist/q2-tecton-elements/p-6fdda37e.entry.js.map +1 -0
  119. package/dist/q2-tecton-elements/p-75bb43b2.entry.js +2 -0
  120. package/dist/q2-tecton-elements/p-75bb43b2.entry.js.map +1 -0
  121. package/dist/q2-tecton-elements/p-9a71bd16.entry.js +2 -0
  122. package/dist/q2-tecton-elements/p-9a71bd16.entry.js.map +1 -0
  123. package/dist/q2-tecton-elements/{p-c9ee763d.entry.js → p-f4b28e89.entry.js} +2 -2
  124. package/dist/q2-tecton-elements/{p-c9ee763d.entry.js.map → p-f4b28e89.entry.js.map} +1 -1
  125. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  126. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js.map +1 -1
  127. package/dist/test/elements/q2-chart-donut-test.e2e.js +9 -1
  128. package/dist/test/elements/q2-chart-donut-test.e2e.js.map +1 -1
  129. package/dist/test/elements/q2-data-table-test.e2e.js +107 -11
  130. package/dist/test/elements/q2-data-table-test.e2e.js.map +1 -1
  131. package/dist/test/elements/q2-dropdown-item-test.e2e.js +183 -104
  132. package/dist/test/elements/q2-dropdown-item-test.e2e.js.map +1 -1
  133. package/dist/test/elements/q2-editable-field-test.e2e.js +436 -418
  134. package/dist/test/elements/q2-editable-field-test.e2e.js.map +1 -1
  135. package/dist/test/elements/q2-popover-test.spec.js +162 -31
  136. package/dist/test/elements/q2-popover-test.spec.js.map +1 -1
  137. package/dist/test/elements/q2-relative-time-test.e2e.js +65 -40
  138. package/dist/test/elements/q2-relative-time-test.e2e.js.map +1 -1
  139. package/dist/test/elements/q2-select-test.e2e.js +53 -22
  140. package/dist/test/elements/q2-select-test.e2e.js.map +1 -1
  141. package/dist/test/elements/q2-stepper-test.e2e.js +23 -0
  142. package/dist/test/elements/q2-stepper-test.e2e.js.map +1 -1
  143. package/dist/types/components/q2-input/q2-input.d.ts +15 -1
  144. package/dist/types/components/q2-popover/q2-popover.d.ts +2 -0
  145. package/dist/types/components/q2-relative-time/q2-relative-time.d.ts +25 -11
  146. package/dist/types/components/q2-section/q2-section.d.ts +10 -2
  147. package/dist/types/components.d.ts +53 -22
  148. package/dist/types/workspace/workspace/_Gitlab_tecton-production_master/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +1 -1
  149. package/package.json +3 -3
  150. package/dist/q2-tecton-elements/p-0e27ea75.entry.js +0 -2
  151. package/dist/q2-tecton-elements/p-0e27ea75.entry.js.map +0 -1
  152. package/dist/q2-tecton-elements/p-45d70da2.entry.js +0 -2
  153. package/dist/q2-tecton-elements/p-45d70da2.entry.js.map +0 -1
  154. package/dist/q2-tecton-elements/p-52e277b8.entry.js +0 -2
  155. package/dist/q2-tecton-elements/p-52e277b8.entry.js.map +0 -1
  156. package/dist/q2-tecton-elements/p-6eac40be.entry.js +0 -2
  157. package/dist/q2-tecton-elements/p-6f2de185.entry.js.map +0 -1
  158. package/dist/q2-tecton-elements/p-774975fa.entry.js.map +0 -1
  159. package/dist/q2-tecton-elements/p-a3d58a50.entry.js.map +0 -1
  160. package/dist/q2-tecton-elements/p-e25194ce.entry.js.map +0 -1
  161. package/dist/q2-tecton-elements/p-f450db0b.entry.js +0 -2
  162. package/dist/q2-tecton-elements/p-f450db0b.entry.js.map +0 -1
  163. package/dist/q2-tecton-elements/p-fce6bc58.entry.js +0 -2
  164. package/dist/q2-tecton-elements/p-fce6bc58.entry.js.map +0 -1
@@ -379,6 +379,29 @@ describe('q2-stepper', () => {
379
379
  expect(await stepBtn.find('.step-description')).toEqual(null);
380
380
  });
381
381
  });
382
+ describe('when label slot is provided in another component used within q2-stepper-pane', () => {
383
+ it('does not use the label for the q2-stepper', async () => {
384
+ const page = await setup({
385
+ html: `
386
+ <q2-stepper>
387
+ <q2-stepper-pane label="My Label">
388
+ Pane 1
389
+ <q2-input>
390
+ <div slot="label">My slotted label</div>
391
+ </q2-input>
392
+ </q2-stepper-pane>
393
+ </q2-stepper>
394
+ `,
395
+ });
396
+ const stepBtn = await page.find('q2-stepper >>> .step-btn');
397
+ const stepperPane = await page.find('q2-stepper-pane');
398
+ const stepperPaneId = await stepperPane.getAttribute('id');
399
+ expect(stepBtn).toEqualAttribute('aria-labelledby', `label-${stepperPaneId}`);
400
+ expect(stepBtn).not.toHaveAttribute('aria-describedby');
401
+ expect(await stepBtn.find(`#label-${stepperPaneId}`)).toEqualText('My Label');
402
+ expect(await stepBtn.find(`#description-${stepperPaneId}`)).toEqual(null);
403
+ });
404
+ });
382
405
  });
383
406
  describe('focus', () => {
384
407
  let page;
@@ -1 +1 @@
1
- {"version":3,"file":"q2-stepper-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-stepper-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EElement, E2EPage, EventSpy } from '@stencil/core/testing';\nimport { evaluateA11y, getListOfStyleCompilationIssues, setup } from '../helpers';\n\ndescribe('q2-stepper', () => {\n const renderStepper = (numberOfSteps: number, currentStep?: number, lastEnabledStep?: number) => {\n return `<q2-stepper ${currentStep ? `current-step=\"${currentStep}\"` : ''} ${\n lastEnabledStep ? `last-enabled-step=\"${lastEnabledStep}\"` : ''\n }>\n ${[...Array(numberOfSteps).keys()].map(\n index => `<q2-stepper-pane>Pane ${index + 1}</q2-stepper-pane>`\n )}\n </q2-stepper>`;\n };\n\n const checkStepStatus = (stepBtn: E2EElement, options?: { selected?: boolean; disabled?: boolean }) => {\n const { selected, disabled } = { ...{ selected: false, disabled: false }, ...options };\n\n if (selected) {\n expect(stepBtn).toHaveAttribute('aria-selected');\n expect(stepBtn).toEqualAttribute('tabindex', '0');\n } else {\n expect(stepBtn).not.toHaveAttribute('aria-selected');\n expect(stepBtn).toEqualAttribute('tabindex', '-1');\n }\n\n if (disabled) {\n expect(stepBtn).toHaveAttribute('aria-disabled');\n } else {\n expect(stepBtn).not.toHaveAttribute('aria-disabled');\n }\n };\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-stepper></q2-stepper>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-stepper')).toHaveLength(0);\n });\n\n describe('[A11y] guideline compliance', () => {\n it('Does not have accessibility violations', async () => {\n const page = await setup({\n html: renderStepper(10),\n });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n });\n\n describe('@Props', () => {\n describe('stepCount', () => {\n it('auto-populates the stepCount property', async () => {\n const page = await setup({\n html: renderStepper(10),\n });\n const stepper = await page.find('q2-stepper');\n\n expect(stepper).not.toHaveAttribute('step-count');\n expect(await stepper.getProperty('stepCount')).toEqual(10);\n });\n });\n\n describe('currentStep', () => {\n describe('when not provided', () => {\n it('marks the first step as active', async () => {\n const page = await setup({\n html: renderStepper(3),\n });\n const stepper = await page.find('q2-stepper');\n const stepBtns = await page.findAll('q2-stepper >>> .step-btn');\n const stepperPanes = await page.findAll('q2-stepper-pane');\n\n expect(stepper).toEqualAttribute('current-step', '1');\n checkStepStatus(stepBtns[0], { selected: true, disabled: false });\n checkStepStatus(stepBtns[1], { disabled: true });\n checkStepStatus(stepBtns[2], { disabled: true });\n expect(stepperPanes[0]).toHaveAttribute('is-active');\n expect(stepperPanes[1]).not.toHaveAttribute('is-active');\n expect(stepperPanes[2]).not.toHaveAttribute('is-active');\n });\n });\n\n describe('when provided', () => {\n it('marks the specified step as active', async () => {\n const page = await setup({\n html: renderStepper(3, 2),\n });\n const stepper = await page.find('q2-stepper');\n const stepBtns = await page.findAll('q2-stepper >>> .step-btn');\n const stepperPanes = await page.findAll('q2-stepper-pane');\n\n expect(stepper).toEqualAttribute('current-step', '2');\n checkStepStatus(stepBtns[0]);\n checkStepStatus(stepBtns[1], { selected: true });\n checkStepStatus(stepBtns[2], { disabled: true });\n expect(stepperPanes[0]).not.toHaveAttribute('is-active');\n expect(stepperPanes[1]).toHaveAttribute('is-active');\n expect(stepperPanes[2]).not.toHaveAttribute('is-active');\n });\n });\n });\n\n describe('lastEnabledStep', () => {\n describe('when not provided', () => {\n it('defaults the value to currentStep', async () => {\n const page = await setup({\n html: renderStepper(3, 2),\n });\n const stepper = await page.find('q2-stepper');\n const stepBtns = await page.findAll('q2-stepper >>> .step-btn');\n\n expect(await stepper.getProperty('lastEnabledStep')).toEqual(2);\n checkStepStatus(stepBtns[0]);\n checkStepStatus(stepBtns[1], { selected: true, disabled: false });\n checkStepStatus(stepBtns[2], { disabled: true });\n });\n });\n\n describe('when provided', () => {\n it('sets all step buttons up to the specified value as enabled', async () => {\n const page = await setup({\n html: renderStepper(3, 1, 2),\n });\n const stepper = await page.find('q2-stepper');\n const stepBtns = await page.findAll('q2-stepper >>> .step-btn');\n\n expect(await stepper.getProperty('lastEnabledStep')).toEqual(2);\n checkStepStatus(stepBtns[0], { selected: true });\n checkStepStatus(stepBtns[1], { disabled: false });\n checkStepStatus(stepBtns[2], { disabled: true });\n });\n });\n\n describe('when updated', () => {\n it('defaults the value to currentStep', async () => {\n const page = await setup({\n html: renderStepper(3, 1, 2),\n });\n const stepper = await page.find('q2-stepper');\n const stepBtns = await page.findAll('q2-stepper >>> .step-btn');\n\n expect(await stepper.getProperty('lastEnabledStep')).toEqual(2);\n checkStepStatus(stepBtns[0], { selected: true });\n checkStepStatus(stepBtns[1], { disabled: false });\n checkStepStatus(stepBtns[2], { disabled: true });\n\n await stepper.setProperty('lastEnabledStep', 3);\n await page.waitForChanges();\n\n checkStepStatus(stepBtns[0], { selected: true });\n checkStepStatus(stepBtns[1]);\n checkStepStatus(stepBtns[2]);\n });\n });\n });\n });\n\n describe('displaying step buttons', () => {\n describe('when label is updated', () => {\n it('updates the label in the step button', async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane>Pane 1</q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n const stepperPane = await page.find('q2-stepper-pane');\n const stepperPaneId = await stepperPane.getAttribute('id');\n\n expect(stepBtn).not.toHaveAttribute('aria-labelledby');\n expect(stepBtn).not.toHaveAttribute('aria-describedby');\n expect(await stepBtn.find(`#label-${stepperPaneId}`)).toBeNull();\n expect(await stepBtn.find(`#description-${stepperPaneId}`)).toBeNull();\n\n await stepperPane.setProperty('label', 'My Updated Label');\n await page.waitForChanges();\n\n expect(stepBtn).toEqualAttribute('aria-labelledby', `label-${stepperPaneId}`);\n expect(stepBtn).not.toHaveAttribute('aria-describedby');\n expect(await stepBtn.find(`#label-${stepperPaneId}`)).toEqualText('My Updated Label');\n expect(await stepBtn.find(`#description-${stepperPaneId}`)).toEqual(null);\n });\n });\n\n describe('when description is updated', () => {\n it('updates the description in the step button', async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane label=\"My label\">Pane 1</q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n const stepperPane = await page.find('q2-stepper-pane');\n const stepperPaneId = await stepperPane.getAttribute('id');\n\n expect(stepBtn).toEqualAttribute('aria-labelledby', `label-${stepperPaneId}`);\n expect(stepBtn).not.toHaveAttribute('aria-describedby');\n expect(await stepBtn.find(`#label-${stepperPaneId}`)).toEqualText('My label');\n expect(await stepBtn.find(`#description-${stepperPaneId}`)).toBeNull();\n\n await stepperPane.setProperty('description', 'My Updated Description');\n await page.waitForChanges();\n\n expect(stepBtn).toEqualAttribute('aria-labelledby', `label-${stepperPaneId}`);\n expect(stepBtn).toEqualAttribute('aria-describedby', `description-${stepperPaneId}`);\n expect(await stepBtn.find(`#label-${stepperPaneId}`)).toEqualText('My label');\n expect(await stepBtn.find(`#description-${stepperPaneId}`)).toEqualText('My Updated Description');\n });\n });\n\n describe('when label and description are provided by a q2-stepper-pane', () => {\n it('displays label and description in the step button', async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane label=\"My Label\" description=\"My Description\">Pane 1</q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n const stepperPane = await page.find('q2-stepper-pane');\n await page.waitForChanges();\n const stepperPaneId = await stepperPane.getProperty('id');\n\n expect(stepBtn).toEqualAttribute('aria-labelledby', `label-${stepperPaneId}`);\n expect(stepBtn).toEqualAttribute('aria-describedby', `description-${stepperPaneId}`);\n expect(await stepBtn.find(`#label-${stepperPaneId}`)).toEqualText('My Label');\n expect(await stepBtn.find(`#description-${stepperPaneId}`)).toEqualText('My Description');\n });\n });\n\n describe('when only label is provided by a q2-stepper-pane', () => {\n it('displays label in the step button', async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane label=\"My Label\">Pane 1</q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n const stepperPane = await page.find('q2-stepper-pane');\n const stepperPaneId = await stepperPane.getAttribute('id');\n\n expect(stepBtn).toEqualAttribute('aria-labelledby', `label-${stepperPaneId}`);\n expect(stepBtn).not.toHaveAttribute('aria-describedby');\n expect(await stepBtn.find(`#label-${stepperPaneId}`)).toEqualText('My Label');\n expect(await stepBtn.find(`#description-${stepperPaneId}`)).toEqual(null);\n });\n });\n\n describe('when only description is provided by a q2-stepper-pane', () => {\n it('does not display any text for the step button', async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane description=\"My Description\">Pane 1</q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n\n expect(stepBtn).not.toHaveAttribute('aria-labelledby');\n expect(stepBtn).not.toHaveAttribute('aria-describedby');\n expect(await stepBtn.find('.step-label')).toEqual(null);\n expect(await stepBtn.find('.step-description')).toEqual(null);\n });\n });\n\n describe('when status is provided by a q2-stepper-pane', () => {\n it('display success q2-icon in the step button for status=\"complete\"', async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane label=\"Step 1\" status=\"complete\">Step 1 contents</q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n expect(await stepBtn.find('q2-icon[type=\"success-filled\"]')).toBeTruthy();\n });\n\n it('display warning q2-icon in the step button for status=\"error\"', async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane label=\"Step 1\" status=\"error\">Step 1 contents</q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n expect(await stepBtn.find('q2-icon[type=\"warning-filled\"]')).toBeTruthy();\n });\n\n it('display no q2-icon in the step button for status=\"locked\"', async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane label=\"Step 1\" status=\"locked\">Step 1 contents</q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n expect(await stepBtn.find('q2-icon')).toBeFalsy();\n });\n });\n\n describe('when label slot is updated', () => {\n it(\"renders the slot content in the step button's label\", async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane label=\"My label\">\n Pane 1\n <div slot=\"label\">My slotted label</div>\n </q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n const stepperPane = await page.find('q2-stepper-pane');\n const stepperPaneId = await stepperPane.getAttribute('id');\n\n await page.evaluate(() => {\n document.querySelector(\"[slot='label']\").innerHTML = 'My updated slotted label';\n });\n await page.waitForChanges();\n\n expect(stepBtn).toEqualAttribute('aria-labelledby', `label-${stepperPaneId}`);\n expect(stepBtn).not.toHaveAttribute('aria-describedby');\n expect(await stepBtn.find(`#label-${stepperPaneId}`)).toEqualText('My updated slotted label');\n expect(await stepBtn.find(`#description-${stepperPaneId}`)).toEqual(null);\n });\n });\n\n describe('when description slot is updated', () => {\n it(\"renders the slot content in the step button's label\", async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane label=\"My label\" description=\"My description\">\n Pane 1\n <div slot=\"description\">My slotted description</div>\n </q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n const stepperPane = await page.find('q2-stepper-pane');\n const stepperPaneId = await stepperPane.getAttribute('id');\n\n await page.evaluate(() => {\n document.querySelector(\"[slot='description']\").innerHTML = 'My updated slotted description';\n });\n await page.waitForChanges();\n\n expect(stepBtn).toEqualAttribute('aria-labelledby', `label-${stepperPaneId}`);\n expect(stepBtn).toEqualAttribute('aria-describedby', `description-${stepperPaneId}`);\n expect(await stepBtn.find(`#label-${stepperPaneId}`)).toEqualText('My label');\n expect(await stepBtn.find(`#description-${stepperPaneId}`)).toEqualText(\n 'My updated slotted description'\n );\n });\n });\n\n describe('when label slot and description slot are provided by a q2-stepper-pane', () => {\n it('displays label and description in the step button', async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane label=\"My Label\" description=\"My Description\">\n Pane 1\n <div slot=\"label\">My slotted label</div>\n <div slot=\"description\">My slotted description</div>\n </q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n const stepperPane = await page.find('q2-stepper-pane');\n await page.waitForChanges();\n const stepperPaneId = await stepperPane.getProperty('id');\n\n expect(stepBtn).toEqualAttribute('aria-labelledby', `label-${stepperPaneId}`);\n expect(stepBtn).toEqualAttribute('aria-describedby', `description-${stepperPaneId}`);\n expect(await stepBtn.find(`#label-${stepperPaneId}`)).toEqualText('My slotted label');\n expect(await stepBtn.find(`#description-${stepperPaneId}`)).toEqualText('My slotted description');\n });\n });\n\n describe('when label slot is provided by q2-stepper-pane', () => {\n it(\"renders the slot content in the step button's label\", async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane label=\"My label\">\n Pane 1\n <div slot=\"label\">My slotted label</div>\n </q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n const stepperPane = await page.find('q2-stepper-pane');\n const stepperPaneId = await stepperPane.getAttribute('id');\n\n expect(stepBtn).toEqualAttribute('aria-labelledby', `label-${stepperPaneId}`);\n expect(stepBtn).not.toHaveAttribute('aria-describedby');\n expect(await stepBtn.find(`#label-${stepperPaneId}`)).toEqualText('My slotted label');\n expect(await stepBtn.find(`#description-${stepperPaneId}`)).toEqual(null);\n });\n });\n\n describe('when only description slot is provided by a q2-stepper-pane', () => {\n it(\"renders the slot content in the step button's label\", async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane description=\"My description\">\n Pane 1\n <div slot=\"description\">My slotted description</div>\n </q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n\n expect(stepBtn).not.toHaveAttribute('aria-labelledby');\n expect(stepBtn).not.toHaveAttribute('aria-describedby');\n expect(await stepBtn.find('.step-label')).toEqual(null);\n expect(await stepBtn.find('.step-description')).toEqual(null);\n });\n });\n });\n\n describe('focus', () => {\n let page: E2EPage;\n let stepper: E2EElement;\n beforeEach(async () => {\n page = await setup({\n html: renderStepper(3, 2),\n });\n stepper = await page.find('q2-stepper');\n });\n\n const focusedStepText = async (page: E2EPage) => {\n return page.$eval('q2-stepper', el => el.shadowRoot.activeElement?.textContent);\n };\n\n it('focuses inner button when focus event is dispatched', async function (): Promise<void> {\n await stepper.triggerEvent('focus');\n await page.waitForChanges();\n\n expect(await focusedStepText(page)).toEqual('2');\n });\n\n it('focuses inner button when element.focus() is called', async function (): Promise<void> {\n await stepper.focus();\n await page.waitForChanges();\n\n expect(await focusedStepText(page)).toEqual('2');\n });\n });\n\n describe('events', () => {\n describe('onchange', () => {\n describe('when not provided', () => {\n it('automatically updates the currentStep to the selected value', async () => {\n const page = await setup({\n html: renderStepper(3, 2),\n });\n const stepper = await page.find('q2-stepper');\n const stepBtns = await page.findAll('q2-stepper >>> .step-btn');\n await stepBtns[0].click();\n expect(stepper).toEqualAttribute('current-step', '1');\n });\n });\n\n describe('when provided', () => {\n it('does not automatically update the currentStep to the selected value', async () => {\n const page = await setup({\n html: `\n <q2-stepper current-step=\"2\" onchange=\"testOnChange()\">\n <q2-stepper-pane>Pane 1</q2-stepper-pane>\n <q2-stepper-pane>Pane 2</q2-stepper-pane>\n <q2-stepper-pane>Pane 3</q2-stepper-pane>\n </q2-stepper>\n <script>function testOnChange() {}</script>\n `,\n });\n const stepper = await page.find('q2-stepper');\n const stepBtns = await page.findAll('q2-stepper >>> .step-btn');\n await stepBtns[0].click();\n expect(stepper).toEqualAttribute('current-step', 2);\n });\n });\n });\n });\n\n describe('selecting steps', () => {\n let page: E2EPage;\n let stepper: E2EElement;\n let stepBtns: E2EElement[];\n let changeSpy: EventSpy;\n\n beforeEach(async () => {\n page = await setup({\n html: renderStepper(3, 2),\n });\n stepper = await page.find('q2-stepper');\n stepBtns = await page.findAll('q2-stepper >>> .step-btn');\n changeSpy = await stepper.spyOnEvent('change');\n });\n\n describe('when selecting a step after the lastEnabledStep', () => {\n it('does not emit an event', async () => {\n await stepBtns[2].click();\n expect(changeSpy).not.toHaveReceivedEvent();\n expect(stepBtns[1]).toHaveAttribute('aria-selected');\n expect(stepper).toEqualAttribute('current-step', 2);\n });\n });\n\n describe('when selecting the currently selected step', () => {\n it('does not emit an event', async () => {\n await stepBtns[1].click();\n expect(changeSpy).not.toHaveReceivedEvent();\n expect(stepBtns[1]).toHaveAttribute('aria-selected');\n expect(stepper).toEqualAttribute('current-step', 2);\n });\n });\n\n describe('when selecting a step before the lastEnabledStep', () => {\n it('does emits an event', async () => {\n await stepBtns[0].click();\n expect(changeSpy).toHaveReceivedEventDetail({\n selectedStep: 1,\n currentStep: 2,\n lastEnabledStep: 2,\n stepCount: 3,\n });\n expect(stepBtns[0]).toHaveAttribute('aria-selected');\n expect(stepper).toEqualAttribute('current-step', 1);\n });\n\n it('allows you to select the lastEnabledStep after selecting a different step', async () => {\n stepper.setProperty('currentStep', 1);\n await page.waitForChanges();\n expect(stepBtns[0]).toHaveAttribute('aria-selected');\n expect(stepper).toEqualAttribute('current-step', 1);\n\n await stepBtns[1].click();\n expect(changeSpy).toHaveReceivedEventDetail({\n selectedStep: 2,\n currentStep: 1,\n lastEnabledStep: 2,\n stepCount: 3,\n });\n expect(stepBtns[1]).toHaveAttribute('aria-selected');\n expect(stepper).toEqualAttribute('current-step', 2);\n });\n });\n });\n\n describe('scroll', () => {\n let page: E2EPage;\n let stepContainer: E2EElement;\n let stepList: E2EElement;\n let btnLeft: E2EElement;\n let btnRight: E2EElement;\n\n describe('when the width of the total steps does not exceed the available width', () => {\n beforeEach(async () => {\n page = await setup({\n html: renderStepper(3),\n });\n stepContainer = await page.find('q2-stepper >>> .step-container');\n stepList = await page.find('q2-stepper >>> ul');\n btnLeft = await page.find('q2-stepper >>> .btn-left');\n btnRight = await page.find('q2-stepper >>> .btn-right');\n });\n\n it('does not display the scroll indicator buttons', async () => {\n expect(stepContainer).not.toHaveClass('has-scroll');\n expect(await stepList.getProperty('scrollWidth')).toEqual(await stepList.getProperty('clientWidth'));\n expect(btnLeft).toBeNull();\n expect(btnRight).toBeNull();\n });\n });\n\n describe('when the width of the total steps exceeds the available width', () => {\n beforeEach(async () => {\n page = await setup({\n html: renderStepper(10),\n });\n stepContainer = await page.find('q2-stepper >>> .step-container');\n stepList = await page.find('q2-stepper >>> ul');\n btnLeft = await page.find('q2-stepper >>> .btn-left');\n btnRight = await page.find('q2-stepper >>> .btn-right');\n });\n\n it('displays the scroll indicator buttons', async () => {\n expect(stepContainer).toHaveClass('has-scroll');\n expect(await stepList.getProperty('scrollWidth')).toBeGreaterThan(\n await stepList.getProperty('clientWidth')\n );\n expect(btnLeft).toBeTruthy();\n expect(btnRight).toBeTruthy();\n });\n\n it('can scroll via buttons', async () => {\n const scrollAmount = Math.floor((await stepList.getProperty('clientWidth')) / 2);\n const scrollByStub = jest.fn(args => {\n page.evaluate(left => {\n document.querySelector('q2-stepper').shadowRoot.querySelector('ul').scrollLeft = left;\n }, args.left);\n });\n await page.exposeFunction('scrollByStub', scrollByStub);\n await page.$eval('q2-stepper', stepper => {\n stepper.shadowRoot.querySelector('ul').scrollBy = scrollByStub;\n });\n\n expect(scrollByStub).toHaveBeenCalledTimes(0);\n expect(btnLeft).toHaveAttribute('hidden');\n expect(btnRight).not.toHaveAttribute('hidden');\n\n await btnRight.click();\n expect(scrollByStub).toHaveBeenCalledWith({\n behavior: 'smooth',\n left: scrollAmount,\n });\n\n scrollByStub.mockReset();\n\n expect(btnRight).toHaveAttribute('hidden');\n expect(btnLeft).not.toHaveAttribute('hidden');\n\n await btnLeft.click();\n expect(scrollByStub).toHaveBeenCalledWith({\n behavior: 'smooth',\n left: -scrollAmount,\n });\n });\n });\n });\n\n describe('keyboard', () => {\n let page: E2EPage;\n let stepBtns: E2EElement[];\n\n const isStepFocused = async (page: E2EPage, stepNumber: number) =>\n page.evaluate(\n stepNumber =>\n document.querySelector('q2-stepper').shadowRoot.activeElement ===\n document\n .querySelector('q2-stepper')\n .shadowRoot.querySelector(`li:nth-child(${stepNumber}) .step-btn`),\n stepNumber\n );\n\n beforeEach(async () => {\n page = await setup({\n html: renderStepper(3, 2),\n });\n stepBtns = await page.findAll('q2-stepper >>> .step-btn');\n });\n\n describe('when arrow keys are pressed', () => {\n it('moves focus along the list of step buttons', async () => {\n await stepBtns[1].focus();\n expect(await isStepFocused(page, 2)).toBe(true);\n\n await page.keyboard.press('ArrowLeft');\n expect(await isStepFocused(page, 1)).toBe(true);\n\n await page.keyboard.press('ArrowRight');\n expect(await isStepFocused(page, 2)).toBe(true);\n\n await page.keyboard.press('ArrowRight');\n expect(await isStepFocused(page, 3)).toBe(true);\n });\n });\n\n describe('when Home is pressed', () => {\n it('focuses the first step button', async () => {\n await stepBtns[1].focus();\n expect(await isStepFocused(page, 2)).toBe(true);\n\n await page.keyboard.press('Home');\n expect(await isStepFocused(page, 1)).toBe(true);\n });\n });\n\n describe('when End is pressed', () => {\n it('focuses the last enabled step button', async () => {\n await stepBtns[0].focus();\n expect(await isStepFocused(page, 1)).toBe(true);\n\n await page.keyboard.press('End');\n expect(await isStepFocused(page, 2)).toBe(true);\n });\n });\n });\n});\n"]}
1
+ {"version":3,"file":"q2-stepper-test.e2e.js","sourceRoot":"","sources":["../../../test/elements/q2-stepper-test.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EElement, E2EPage, EventSpy } from '@stencil/core/testing';\nimport { evaluateA11y, getListOfStyleCompilationIssues, setup } from '../helpers';\n\ndescribe('q2-stepper', () => {\n const renderStepper = (numberOfSteps: number, currentStep?: number, lastEnabledStep?: number) => {\n return `<q2-stepper ${currentStep ? `current-step=\"${currentStep}\"` : ''} ${\n lastEnabledStep ? `last-enabled-step=\"${lastEnabledStep}\"` : ''\n }>\n ${[...Array(numberOfSteps).keys()].map(\n index => `<q2-stepper-pane>Pane ${index + 1}</q2-stepper-pane>`\n )}\n </q2-stepper>`;\n };\n\n const checkStepStatus = (stepBtn: E2EElement, options?: { selected?: boolean; disabled?: boolean }) => {\n const { selected, disabled } = { ...{ selected: false, disabled: false }, ...options };\n\n if (selected) {\n expect(stepBtn).toHaveAttribute('aria-selected');\n expect(stepBtn).toEqualAttribute('tabindex', '0');\n } else {\n expect(stepBtn).not.toHaveAttribute('aria-selected');\n expect(stepBtn).toEqualAttribute('tabindex', '-1');\n }\n\n if (disabled) {\n expect(stepBtn).toHaveAttribute('aria-disabled');\n } else {\n expect(stepBtn).not.toHaveAttribute('aria-disabled');\n }\n };\n\n it('properly compiles CSS vars and functions', async () => {\n const page = await setup({ html: '<q2-stepper></q2-stepper>' });\n expect(await getListOfStyleCompilationIssues(page, 'q2-stepper')).toHaveLength(0);\n });\n\n describe('[A11y] guideline compliance', () => {\n it('Does not have accessibility violations', async () => {\n const page = await setup({\n html: renderStepper(10),\n });\n const hasViolations = await evaluateA11y(page);\n expect(hasViolations).toBe(false);\n });\n });\n\n describe('@Props', () => {\n describe('stepCount', () => {\n it('auto-populates the stepCount property', async () => {\n const page = await setup({\n html: renderStepper(10),\n });\n const stepper = await page.find('q2-stepper');\n\n expect(stepper).not.toHaveAttribute('step-count');\n expect(await stepper.getProperty('stepCount')).toEqual(10);\n });\n });\n\n describe('currentStep', () => {\n describe('when not provided', () => {\n it('marks the first step as active', async () => {\n const page = await setup({\n html: renderStepper(3),\n });\n const stepper = await page.find('q2-stepper');\n const stepBtns = await page.findAll('q2-stepper >>> .step-btn');\n const stepperPanes = await page.findAll('q2-stepper-pane');\n\n expect(stepper).toEqualAttribute('current-step', '1');\n checkStepStatus(stepBtns[0], { selected: true, disabled: false });\n checkStepStatus(stepBtns[1], { disabled: true });\n checkStepStatus(stepBtns[2], { disabled: true });\n expect(stepperPanes[0]).toHaveAttribute('is-active');\n expect(stepperPanes[1]).not.toHaveAttribute('is-active');\n expect(stepperPanes[2]).not.toHaveAttribute('is-active');\n });\n });\n\n describe('when provided', () => {\n it('marks the specified step as active', async () => {\n const page = await setup({\n html: renderStepper(3, 2),\n });\n const stepper = await page.find('q2-stepper');\n const stepBtns = await page.findAll('q2-stepper >>> .step-btn');\n const stepperPanes = await page.findAll('q2-stepper-pane');\n\n expect(stepper).toEqualAttribute('current-step', '2');\n checkStepStatus(stepBtns[0]);\n checkStepStatus(stepBtns[1], { selected: true });\n checkStepStatus(stepBtns[2], { disabled: true });\n expect(stepperPanes[0]).not.toHaveAttribute('is-active');\n expect(stepperPanes[1]).toHaveAttribute('is-active');\n expect(stepperPanes[2]).not.toHaveAttribute('is-active');\n });\n });\n });\n\n describe('lastEnabledStep', () => {\n describe('when not provided', () => {\n it('defaults the value to currentStep', async () => {\n const page = await setup({\n html: renderStepper(3, 2),\n });\n const stepper = await page.find('q2-stepper');\n const stepBtns = await page.findAll('q2-stepper >>> .step-btn');\n\n expect(await stepper.getProperty('lastEnabledStep')).toEqual(2);\n checkStepStatus(stepBtns[0]);\n checkStepStatus(stepBtns[1], { selected: true, disabled: false });\n checkStepStatus(stepBtns[2], { disabled: true });\n });\n });\n\n describe('when provided', () => {\n it('sets all step buttons up to the specified value as enabled', async () => {\n const page = await setup({\n html: renderStepper(3, 1, 2),\n });\n const stepper = await page.find('q2-stepper');\n const stepBtns = await page.findAll('q2-stepper >>> .step-btn');\n\n expect(await stepper.getProperty('lastEnabledStep')).toEqual(2);\n checkStepStatus(stepBtns[0], { selected: true });\n checkStepStatus(stepBtns[1], { disabled: false });\n checkStepStatus(stepBtns[2], { disabled: true });\n });\n });\n\n describe('when updated', () => {\n it('defaults the value to currentStep', async () => {\n const page = await setup({\n html: renderStepper(3, 1, 2),\n });\n const stepper = await page.find('q2-stepper');\n const stepBtns = await page.findAll('q2-stepper >>> .step-btn');\n\n expect(await stepper.getProperty('lastEnabledStep')).toEqual(2);\n checkStepStatus(stepBtns[0], { selected: true });\n checkStepStatus(stepBtns[1], { disabled: false });\n checkStepStatus(stepBtns[2], { disabled: true });\n\n await stepper.setProperty('lastEnabledStep', 3);\n await page.waitForChanges();\n\n checkStepStatus(stepBtns[0], { selected: true });\n checkStepStatus(stepBtns[1]);\n checkStepStatus(stepBtns[2]);\n });\n });\n });\n });\n\n describe('displaying step buttons', () => {\n describe('when label is updated', () => {\n it('updates the label in the step button', async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane>Pane 1</q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n const stepperPane = await page.find('q2-stepper-pane');\n const stepperPaneId = await stepperPane.getAttribute('id');\n\n expect(stepBtn).not.toHaveAttribute('aria-labelledby');\n expect(stepBtn).not.toHaveAttribute('aria-describedby');\n expect(await stepBtn.find(`#label-${stepperPaneId}`)).toBeNull();\n expect(await stepBtn.find(`#description-${stepperPaneId}`)).toBeNull();\n\n await stepperPane.setProperty('label', 'My Updated Label');\n await page.waitForChanges();\n\n expect(stepBtn).toEqualAttribute('aria-labelledby', `label-${stepperPaneId}`);\n expect(stepBtn).not.toHaveAttribute('aria-describedby');\n expect(await stepBtn.find(`#label-${stepperPaneId}`)).toEqualText('My Updated Label');\n expect(await stepBtn.find(`#description-${stepperPaneId}`)).toEqual(null);\n });\n });\n\n describe('when description is updated', () => {\n it('updates the description in the step button', async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane label=\"My label\">Pane 1</q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n const stepperPane = await page.find('q2-stepper-pane');\n const stepperPaneId = await stepperPane.getAttribute('id');\n\n expect(stepBtn).toEqualAttribute('aria-labelledby', `label-${stepperPaneId}`);\n expect(stepBtn).not.toHaveAttribute('aria-describedby');\n expect(await stepBtn.find(`#label-${stepperPaneId}`)).toEqualText('My label');\n expect(await stepBtn.find(`#description-${stepperPaneId}`)).toBeNull();\n\n await stepperPane.setProperty('description', 'My Updated Description');\n await page.waitForChanges();\n\n expect(stepBtn).toEqualAttribute('aria-labelledby', `label-${stepperPaneId}`);\n expect(stepBtn).toEqualAttribute('aria-describedby', `description-${stepperPaneId}`);\n expect(await stepBtn.find(`#label-${stepperPaneId}`)).toEqualText('My label');\n expect(await stepBtn.find(`#description-${stepperPaneId}`)).toEqualText('My Updated Description');\n });\n });\n\n describe('when label and description are provided by a q2-stepper-pane', () => {\n it('displays label and description in the step button', async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane label=\"My Label\" description=\"My Description\">Pane 1</q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n const stepperPane = await page.find('q2-stepper-pane');\n await page.waitForChanges();\n const stepperPaneId = await stepperPane.getProperty('id');\n\n expect(stepBtn).toEqualAttribute('aria-labelledby', `label-${stepperPaneId}`);\n expect(stepBtn).toEqualAttribute('aria-describedby', `description-${stepperPaneId}`);\n expect(await stepBtn.find(`#label-${stepperPaneId}`)).toEqualText('My Label');\n expect(await stepBtn.find(`#description-${stepperPaneId}`)).toEqualText('My Description');\n });\n });\n\n describe('when only label is provided by a q2-stepper-pane', () => {\n it('displays label in the step button', async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane label=\"My Label\">Pane 1</q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n const stepperPane = await page.find('q2-stepper-pane');\n const stepperPaneId = await stepperPane.getAttribute('id');\n\n expect(stepBtn).toEqualAttribute('aria-labelledby', `label-${stepperPaneId}`);\n expect(stepBtn).not.toHaveAttribute('aria-describedby');\n expect(await stepBtn.find(`#label-${stepperPaneId}`)).toEqualText('My Label');\n expect(await stepBtn.find(`#description-${stepperPaneId}`)).toEqual(null);\n });\n });\n\n describe('when only description is provided by a q2-stepper-pane', () => {\n it('does not display any text for the step button', async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane description=\"My Description\">Pane 1</q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n\n expect(stepBtn).not.toHaveAttribute('aria-labelledby');\n expect(stepBtn).not.toHaveAttribute('aria-describedby');\n expect(await stepBtn.find('.step-label')).toEqual(null);\n expect(await stepBtn.find('.step-description')).toEqual(null);\n });\n });\n\n describe('when status is provided by a q2-stepper-pane', () => {\n it('display success q2-icon in the step button for status=\"complete\"', async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane label=\"Step 1\" status=\"complete\">Step 1 contents</q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n expect(await stepBtn.find('q2-icon[type=\"success-filled\"]')).toBeTruthy();\n });\n\n it('display warning q2-icon in the step button for status=\"error\"', async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane label=\"Step 1\" status=\"error\">Step 1 contents</q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n expect(await stepBtn.find('q2-icon[type=\"warning-filled\"]')).toBeTruthy();\n });\n\n it('display no q2-icon in the step button for status=\"locked\"', async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane label=\"Step 1\" status=\"locked\">Step 1 contents</q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n expect(await stepBtn.find('q2-icon')).toBeFalsy();\n });\n });\n\n describe('when label slot is updated', () => {\n it(\"renders the slot content in the step button's label\", async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane label=\"My label\">\n Pane 1\n <div slot=\"label\">My slotted label</div>\n </q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n const stepperPane = await page.find('q2-stepper-pane');\n const stepperPaneId = await stepperPane.getAttribute('id');\n\n await page.evaluate(() => {\n document.querySelector(\"[slot='label']\").innerHTML = 'My updated slotted label';\n });\n await page.waitForChanges();\n\n expect(stepBtn).toEqualAttribute('aria-labelledby', `label-${stepperPaneId}`);\n expect(stepBtn).not.toHaveAttribute('aria-describedby');\n expect(await stepBtn.find(`#label-${stepperPaneId}`)).toEqualText('My updated slotted label');\n expect(await stepBtn.find(`#description-${stepperPaneId}`)).toEqual(null);\n });\n });\n\n describe('when description slot is updated', () => {\n it(\"renders the slot content in the step button's label\", async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane label=\"My label\" description=\"My description\">\n Pane 1\n <div slot=\"description\">My slotted description</div>\n </q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n const stepperPane = await page.find('q2-stepper-pane');\n const stepperPaneId = await stepperPane.getAttribute('id');\n\n await page.evaluate(() => {\n document.querySelector(\"[slot='description']\").innerHTML = 'My updated slotted description';\n });\n await page.waitForChanges();\n\n expect(stepBtn).toEqualAttribute('aria-labelledby', `label-${stepperPaneId}`);\n expect(stepBtn).toEqualAttribute('aria-describedby', `description-${stepperPaneId}`);\n expect(await stepBtn.find(`#label-${stepperPaneId}`)).toEqualText('My label');\n expect(await stepBtn.find(`#description-${stepperPaneId}`)).toEqualText(\n 'My updated slotted description'\n );\n });\n });\n\n describe('when label slot and description slot are provided by a q2-stepper-pane', () => {\n it('displays label and description in the step button', async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane label=\"My Label\" description=\"My Description\">\n Pane 1\n <div slot=\"label\">My slotted label</div>\n <div slot=\"description\">My slotted description</div>\n </q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n const stepperPane = await page.find('q2-stepper-pane');\n await page.waitForChanges();\n const stepperPaneId = await stepperPane.getProperty('id');\n\n expect(stepBtn).toEqualAttribute('aria-labelledby', `label-${stepperPaneId}`);\n expect(stepBtn).toEqualAttribute('aria-describedby', `description-${stepperPaneId}`);\n expect(await stepBtn.find(`#label-${stepperPaneId}`)).toEqualText('My slotted label');\n expect(await stepBtn.find(`#description-${stepperPaneId}`)).toEqualText('My slotted description');\n });\n });\n\n describe('when label slot is provided by q2-stepper-pane', () => {\n it(\"renders the slot content in the step button's label\", async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane label=\"My label\">\n Pane 1\n <div slot=\"label\">My slotted label</div>\n </q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n const stepperPane = await page.find('q2-stepper-pane');\n const stepperPaneId = await stepperPane.getAttribute('id');\n\n expect(stepBtn).toEqualAttribute('aria-labelledby', `label-${stepperPaneId}`);\n expect(stepBtn).not.toHaveAttribute('aria-describedby');\n expect(await stepBtn.find(`#label-${stepperPaneId}`)).toEqualText('My slotted label');\n expect(await stepBtn.find(`#description-${stepperPaneId}`)).toEqual(null);\n });\n });\n\n describe('when only description slot is provided by a q2-stepper-pane', () => {\n it(\"renders the slot content in the step button's label\", async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane description=\"My description\">\n Pane 1\n <div slot=\"description\">My slotted description</div>\n </q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n\n expect(stepBtn).not.toHaveAttribute('aria-labelledby');\n expect(stepBtn).not.toHaveAttribute('aria-describedby');\n expect(await stepBtn.find('.step-label')).toEqual(null);\n expect(await stepBtn.find('.step-description')).toEqual(null);\n });\n });\n\n describe('when label slot is provided in another component used within q2-stepper-pane', () => {\n it('does not use the label for the q2-stepper', async () => {\n const page = await setup({\n html: `\n <q2-stepper>\n <q2-stepper-pane label=\"My Label\">\n Pane 1\n <q2-input>\n <div slot=\"label\">My slotted label</div>\n </q2-input>\n </q2-stepper-pane>\n </q2-stepper>\n `,\n });\n const stepBtn = await page.find('q2-stepper >>> .step-btn');\n const stepperPane = await page.find('q2-stepper-pane');\n const stepperPaneId = await stepperPane.getAttribute('id');\n\n expect(stepBtn).toEqualAttribute('aria-labelledby', `label-${stepperPaneId}`);\n expect(stepBtn).not.toHaveAttribute('aria-describedby');\n expect(await stepBtn.find(`#label-${stepperPaneId}`)).toEqualText('My Label');\n expect(await stepBtn.find(`#description-${stepperPaneId}`)).toEqual(null);\n });\n });\n });\n\n describe('focus', () => {\n let page: E2EPage;\n let stepper: E2EElement;\n beforeEach(async () => {\n page = await setup({\n html: renderStepper(3, 2),\n });\n stepper = await page.find('q2-stepper');\n });\n\n const focusedStepText = async (page: E2EPage) => {\n return page.$eval('q2-stepper', el => el.shadowRoot.activeElement?.textContent);\n };\n\n it('focuses inner button when focus event is dispatched', async function (): Promise<void> {\n await stepper.triggerEvent('focus');\n await page.waitForChanges();\n\n expect(await focusedStepText(page)).toEqual('2');\n });\n\n it('focuses inner button when element.focus() is called', async function (): Promise<void> {\n await stepper.focus();\n await page.waitForChanges();\n\n expect(await focusedStepText(page)).toEqual('2');\n });\n });\n\n describe('events', () => {\n describe('onchange', () => {\n describe('when not provided', () => {\n it('automatically updates the currentStep to the selected value', async () => {\n const page = await setup({\n html: renderStepper(3, 2),\n });\n const stepper = await page.find('q2-stepper');\n const stepBtns = await page.findAll('q2-stepper >>> .step-btn');\n await stepBtns[0].click();\n expect(stepper).toEqualAttribute('current-step', '1');\n });\n });\n\n describe('when provided', () => {\n it('does not automatically update the currentStep to the selected value', async () => {\n const page = await setup({\n html: `\n <q2-stepper current-step=\"2\" onchange=\"testOnChange()\">\n <q2-stepper-pane>Pane 1</q2-stepper-pane>\n <q2-stepper-pane>Pane 2</q2-stepper-pane>\n <q2-stepper-pane>Pane 3</q2-stepper-pane>\n </q2-stepper>\n <script>function testOnChange() {}</script>\n `,\n });\n const stepper = await page.find('q2-stepper');\n const stepBtns = await page.findAll('q2-stepper >>> .step-btn');\n await stepBtns[0].click();\n expect(stepper).toEqualAttribute('current-step', 2);\n });\n });\n });\n });\n\n describe('selecting steps', () => {\n let page: E2EPage;\n let stepper: E2EElement;\n let stepBtns: E2EElement[];\n let changeSpy: EventSpy;\n\n beforeEach(async () => {\n page = await setup({\n html: renderStepper(3, 2),\n });\n stepper = await page.find('q2-stepper');\n stepBtns = await page.findAll('q2-stepper >>> .step-btn');\n changeSpy = await stepper.spyOnEvent('change');\n });\n\n describe('when selecting a step after the lastEnabledStep', () => {\n it('does not emit an event', async () => {\n await stepBtns[2].click();\n expect(changeSpy).not.toHaveReceivedEvent();\n expect(stepBtns[1]).toHaveAttribute('aria-selected');\n expect(stepper).toEqualAttribute('current-step', 2);\n });\n });\n\n describe('when selecting the currently selected step', () => {\n it('does not emit an event', async () => {\n await stepBtns[1].click();\n expect(changeSpy).not.toHaveReceivedEvent();\n expect(stepBtns[1]).toHaveAttribute('aria-selected');\n expect(stepper).toEqualAttribute('current-step', 2);\n });\n });\n\n describe('when selecting a step before the lastEnabledStep', () => {\n it('does emits an event', async () => {\n await stepBtns[0].click();\n expect(changeSpy).toHaveReceivedEventDetail({\n selectedStep: 1,\n currentStep: 2,\n lastEnabledStep: 2,\n stepCount: 3,\n });\n expect(stepBtns[0]).toHaveAttribute('aria-selected');\n expect(stepper).toEqualAttribute('current-step', 1);\n });\n\n it('allows you to select the lastEnabledStep after selecting a different step', async () => {\n stepper.setProperty('currentStep', 1);\n await page.waitForChanges();\n expect(stepBtns[0]).toHaveAttribute('aria-selected');\n expect(stepper).toEqualAttribute('current-step', 1);\n\n await stepBtns[1].click();\n expect(changeSpy).toHaveReceivedEventDetail({\n selectedStep: 2,\n currentStep: 1,\n lastEnabledStep: 2,\n stepCount: 3,\n });\n expect(stepBtns[1]).toHaveAttribute('aria-selected');\n expect(stepper).toEqualAttribute('current-step', 2);\n });\n });\n });\n\n describe('scroll', () => {\n let page: E2EPage;\n let stepContainer: E2EElement;\n let stepList: E2EElement;\n let btnLeft: E2EElement;\n let btnRight: E2EElement;\n\n describe('when the width of the total steps does not exceed the available width', () => {\n beforeEach(async () => {\n page = await setup({\n html: renderStepper(3),\n });\n stepContainer = await page.find('q2-stepper >>> .step-container');\n stepList = await page.find('q2-stepper >>> ul');\n btnLeft = await page.find('q2-stepper >>> .btn-left');\n btnRight = await page.find('q2-stepper >>> .btn-right');\n });\n\n it('does not display the scroll indicator buttons', async () => {\n expect(stepContainer).not.toHaveClass('has-scroll');\n expect(await stepList.getProperty('scrollWidth')).toEqual(await stepList.getProperty('clientWidth'));\n expect(btnLeft).toBeNull();\n expect(btnRight).toBeNull();\n });\n });\n\n describe('when the width of the total steps exceeds the available width', () => {\n beforeEach(async () => {\n page = await setup({\n html: renderStepper(10),\n });\n stepContainer = await page.find('q2-stepper >>> .step-container');\n stepList = await page.find('q2-stepper >>> ul');\n btnLeft = await page.find('q2-stepper >>> .btn-left');\n btnRight = await page.find('q2-stepper >>> .btn-right');\n });\n\n it('displays the scroll indicator buttons', async () => {\n expect(stepContainer).toHaveClass('has-scroll');\n expect(await stepList.getProperty('scrollWidth')).toBeGreaterThan(\n await stepList.getProperty('clientWidth')\n );\n expect(btnLeft).toBeTruthy();\n expect(btnRight).toBeTruthy();\n });\n\n it('can scroll via buttons', async () => {\n const scrollAmount = Math.floor((await stepList.getProperty('clientWidth')) / 2);\n const scrollByStub = jest.fn(args => {\n page.evaluate(left => {\n document.querySelector('q2-stepper').shadowRoot.querySelector('ul').scrollLeft = left;\n }, args.left);\n });\n await page.exposeFunction('scrollByStub', scrollByStub);\n await page.$eval('q2-stepper', stepper => {\n stepper.shadowRoot.querySelector('ul').scrollBy = scrollByStub;\n });\n\n expect(scrollByStub).toHaveBeenCalledTimes(0);\n expect(btnLeft).toHaveAttribute('hidden');\n expect(btnRight).not.toHaveAttribute('hidden');\n\n await btnRight.click();\n expect(scrollByStub).toHaveBeenCalledWith({\n behavior: 'smooth',\n left: scrollAmount,\n });\n\n scrollByStub.mockReset();\n\n expect(btnRight).toHaveAttribute('hidden');\n expect(btnLeft).not.toHaveAttribute('hidden');\n\n await btnLeft.click();\n expect(scrollByStub).toHaveBeenCalledWith({\n behavior: 'smooth',\n left: -scrollAmount,\n });\n });\n });\n });\n\n describe('keyboard', () => {\n let page: E2EPage;\n let stepBtns: E2EElement[];\n\n const isStepFocused = async (page: E2EPage, stepNumber: number) =>\n page.evaluate(\n stepNumber =>\n document.querySelector('q2-stepper').shadowRoot.activeElement ===\n document\n .querySelector('q2-stepper')\n .shadowRoot.querySelector(`li:nth-child(${stepNumber}) .step-btn`),\n stepNumber\n );\n\n beforeEach(async () => {\n page = await setup({\n html: renderStepper(3, 2),\n });\n stepBtns = await page.findAll('q2-stepper >>> .step-btn');\n });\n\n describe('when arrow keys are pressed', () => {\n it('moves focus along the list of step buttons', async () => {\n await stepBtns[1].focus();\n expect(await isStepFocused(page, 2)).toBe(true);\n\n await page.keyboard.press('ArrowLeft');\n expect(await isStepFocused(page, 1)).toBe(true);\n\n await page.keyboard.press('ArrowRight');\n expect(await isStepFocused(page, 2)).toBe(true);\n\n await page.keyboard.press('ArrowRight');\n expect(await isStepFocused(page, 3)).toBe(true);\n });\n });\n\n describe('when Home is pressed', () => {\n it('focuses the first step button', async () => {\n await stepBtns[1].focus();\n expect(await isStepFocused(page, 2)).toBe(true);\n\n await page.keyboard.press('Home');\n expect(await isStepFocused(page, 1)).toBe(true);\n });\n });\n\n describe('when End is pressed', () => {\n it('focuses the last enabled step button', async () => {\n await stepBtns[0].focus();\n expect(await isStepFocused(page, 1)).toBe(true);\n\n await page.keyboard.press('End');\n expect(await isStepFocused(page, 2)).toBe(true);\n });\n });\n });\n});\n"]}
@@ -188,6 +188,21 @@ export declare class Q2Input {
188
188
  *
189
189
  */
190
190
  value: string;
191
+ /**
192
+ * The pattern string of the input field, regular expression string is expected.
193
+ * This allows us to check the validity user's input.
194
+ * For instance,
195
+ * &lt;q2-input label="My input" pattern="[a-zA-Z0-9]{3,5}" id="myInput"&gt;
196
+ *
197
+ * - Allows only 3~5 alphanumeric letters
198
+ *
199
+ * In Javascript, you can check the validity object in your q2-input
200
+ * Type "abcdefgh", then access the validity object
201
+ * @snippet
202
+ * const myInput = document.querySelector('#myInput');
203
+ * console.log(myInput.validity);
204
+ */
205
+ pattern: string;
191
206
  ariaOwns: string;
192
207
  ariaControls: string;
193
208
  ariaHaspopup: string;
@@ -195,7 +210,6 @@ export declare class Q2Input {
195
210
  ariaActivedescendant: string;
196
211
  /** @deprecated */
197
212
  ariaLabel: string;
198
- pattern: string;
199
213
  validity: ValidityState;
200
214
  formattedValueObject: IFormatterValueObject;
201
215
  hasFocus: boolean;
@@ -27,6 +27,7 @@ export declare class Q2Popover implements ComponentInterface {
27
27
  show: boolean;
28
28
  containerElement: HTMLDivElement;
29
29
  contentElement: HTMLDivElement;
30
+ rootElementRect: DOMRect;
30
31
  /**
31
32
  * The number of pixels to leave between the popover and the edge of the viewport
32
33
  */
@@ -37,6 +38,7 @@ export declare class Q2Popover implements ComponentInterface {
37
38
  disconnectedCallback(): void;
38
39
  toggle(): Promise<void>;
39
40
  scrollContainerTo(options: ScrollToOptions): Promise<void>;
41
+ setRootElement(): void;
40
42
  openChanged(open: boolean): Promise<void>;
41
43
  minHeightProvided(): void;
42
44
  popoverStateHandler(event: CustomEvent<{
@@ -1,23 +1,30 @@
1
1
  import { ComponentInterface } from '../../stencil-public-runtime';
2
2
  export declare class Q2RelativeTime implements ComponentInterface {
3
3
  /**
4
- * If you want to compare two specific dates, you can provide a valid `date` and `baseDate`, and the component will tell you the elapsed time between the two dates.
5
- * If `baseDate` is not provided, the date and time at render will be used instead and - if `sync` is true - updated every second to reflect the time between the `date` value and now.
4
+ * If you want to display the length of time between two specific dates, you can provide a valid `date` and `baseDate`, and the component will display the length of time between the two dates.
5
+ *
6
+ * If `baseDate` is not provided, the date and time at render will be used instead and - if `sync` is true - updated every second to reflect the time between the `date` value and the time at render.
7
+ *
6
8
  * @warning
7
9
  * - Requires a valid `date` value.
10
+ * - If the provided `baseDate` is invalid, the component will display "Invalid Date" and a warning message will be printed in the console.
8
11
  * - Providing a valid `baseDate` will disable `sync` and remove the "in"/"ago" suffixes in the time message.
9
12
  * - Must be a valid ISO date string.
10
13
  */
11
14
  baseDate: Date | string;
12
15
  /**
13
- * The language used for the relative time message.
16
+ * The language used for the displayed message.
14
17
  * @info
15
- * It is recommended to use the BCP 47 Language Tags in the ['language-extlang' format](https://www.w3.org/International/articles/language-tags/).
18
+ * It is recommended to use the BCP 47 Language Tags in the ["language-extlang" format](https://www.w3.org/International/articles/language-tags/).
16
19
  */
17
20
  locale: string;
18
21
  /** The length of the relative time message. */
19
22
  messageFormat: 'long' | 'short' | 'narrow';
20
- /** Set this to `always` to force the use of numeric values (e.g. "1 day ago") rather than relative ones (e.g. "yesterday") in the time message. */
23
+ /**
24
+ * Determines if the displayed message will use numeric or relative values.
25
+ *@info
26
+ * Set this property to `always` to force the use of numeric values (e.g. "1 day ago") rather than relative ones (e.g. "yesterday").
27
+ */
21
28
  numeric: 'always' | 'auto';
22
29
  /**
23
30
  * Keep the displayed message updated as time passes in the webpage.
@@ -27,11 +34,13 @@ export declare class Q2RelativeTime implements ComponentInterface {
27
34
  sync: boolean;
28
35
  /**
29
36
  * The date you want to calculate relative time from.
37
+ *
30
38
  * @warning
31
- * Must be a valid ISO date string.
39
+ * - Must be a valid ISO date string.
40
+ * - If the provided `date` is invalid, the component will display "Invalid Date" and a warning message will be printed in the console.
32
41
  */
33
42
  date: Date | string;
34
- /** Force the unit of measurement. */
43
+ /** Enforces the use of the provided unit of measurement in the displayed message. */
35
44
  unit: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'quarter' | 'year';
36
45
  /**
37
46
  * @private
@@ -47,10 +56,11 @@ export declare class Q2RelativeTime implements ComponentInterface {
47
56
  connectedCallback(): void;
48
57
  disconnectedCallback(): void;
49
58
  get shouldShow(): boolean;
50
- get validDate(): boolean;
51
- get handleDate(): Date;
52
- get validBaseDate(): boolean;
53
- get handleBaseDate(): Date;
59
+ get isValidDate(): boolean;
60
+ get dateObject(): Date;
61
+ get isBaseDateProvided(): boolean;
62
+ get isValidBaseDate(): boolean;
63
+ get baseDateObject(): Date;
54
64
  get isValidUnit(): boolean;
55
65
  get handleNumeric(): 'always' | 'auto';
56
66
  syncUpdated(): void;
@@ -58,5 +68,9 @@ export declare class Q2RelativeTime implements ComponentInterface {
58
68
  trimMessage(message: string): string;
59
69
  /** Retrieves the value of the displayed messages. */
60
70
  displayedMessageValue(): Promise<string>;
71
+ /** Checks the provided date prop is a valid date. */
72
+ validDateProp(): Promise<boolean>;
73
+ /** Checks the provided baseDate prop is a valid date. */
74
+ validBaseDateProp(): Promise<boolean>;
61
75
  render(): any;
62
76
  }
@@ -5,7 +5,15 @@ export declare class Q2Section implements ComponentInterface {
5
5
  collapsible: boolean;
6
6
  /** Indicates if the `q2-section` is in an expanded state or not. */
7
7
  expanded: boolean;
8
- /** The text to display above the `q2-section`. Renders as an `<h2>` element. */
8
+ /**
9
+ * The text to display above the `q2-section`. Renders as an `<h2>` element.
10
+ *
11
+ * It is also used to provided an `aria-label` for the toggle button when the component is collapsible.
12
+ *
13
+ * @warning
14
+ * If you are providing a custom header, setting this property is still strongly encouraged for the purposes of
15
+ * accessibility.
16
+ */
9
17
  label: string;
10
18
  /** Determines if the collapse chevron icon should show in the `q2-section` header. */
11
19
  noCollapseIcon: boolean;
@@ -15,7 +23,7 @@ export declare class Q2Section implements ComponentInterface {
15
23
  hasYieldedHeader: boolean;
16
24
  titleId: string;
17
25
  contentId: string;
18
- resizerFn: NodeJS.Timer | undefined;
26
+ resizerFn: NodeJS.Timeout | undefined;
19
27
  headerSlotMutationObserver: MutationObserver;
20
28
  contentSlotMutationObserver: MutationObserver;
21
29
  contentContainer: HTMLDivElement;