@scania/tegel 1.4.0 → 1.5.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 (218) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/tds-dropdown.cjs.entry.js +17 -13
  3. package/dist/cjs/tds-header-cell.cjs.entry.js +2 -2
  4. package/dist/cjs/tds-icon.cjs.entry.js +3 -2
  5. package/dist/cjs/tds-modal.cjs.entry.js +1 -1
  6. package/dist/cjs/tegel.cjs.js +1 -1
  7. package/dist/collection/components/dropdown/dropdown.css +1 -0
  8. package/dist/collection/components/dropdown/dropdown.js +16 -12
  9. package/dist/collection/components/icon/icon.js +23 -5
  10. package/dist/collection/components/modal/modal.css +1 -1
  11. package/dist/collection/components/table/table-header-cell/table-header-cell.js +13 -10
  12. package/dist/components/icon.js +4 -2
  13. package/dist/components/tds-dropdown.js +17 -13
  14. package/dist/components/tds-header-cell.js +2 -2
  15. package/dist/components/tds-modal.js +1 -1
  16. package/dist/esm/loader.js +1 -1
  17. package/dist/esm/tds-dropdown.entry.js +17 -13
  18. package/dist/esm/tds-header-cell.entry.js +2 -2
  19. package/dist/esm/tds-icon.entry.js +3 -2
  20. package/dist/esm/tds-modal.entry.js +1 -1
  21. package/dist/esm/tegel.js +1 -1
  22. package/dist/tegel/p-15f8ac46.entry.js +1 -0
  23. package/dist/tegel/p-3b597a64.entry.js +1 -0
  24. package/dist/tegel/{p-6dc8f2dd.entry.js → p-78853c02.entry.js} +1 -1
  25. package/dist/tegel/p-7d93c35b.entry.js +1 -0
  26. package/dist/tegel/tegel.esm.js +1 -1
  27. package/dist/types/components/dropdown/dropdown.d.ts +2 -0
  28. package/dist/types/components/icon/icon.d.ts +6 -3
  29. package/dist/types/components/table/table-header-cell/table-header-cell.d.ts +14 -8
  30. package/dist/types/components.d.ts +20 -12
  31. package/package.json +1 -1
  32. package/dist/collection/components/accordion/accordion.stories.js +0 -100
  33. package/dist/collection/components/accordion/test/basic/accordion.e2e.js +0 -19
  34. package/dist/collection/components/accordion/test/disabled/accordion.e2e.js +0 -19
  35. package/dist/collection/components/accordion/test/expanded/accordion.e2e.js +0 -24
  36. package/dist/collection/components/accordion/test/padding-reset/accordion.e2e.js +0 -24
  37. package/dist/collection/components/badge/badge.stories.js +0 -106
  38. package/dist/collection/components/badge/test/basic/badge.e2e.js +0 -10
  39. package/dist/collection/components/badge/test/value/badge.e2e.js +0 -11
  40. package/dist/collection/components/banner/banner.stories.js +0 -92
  41. package/dist/collection/components/banner/test/basic/banner.e2e.js +0 -15
  42. package/dist/collection/components/banner/test/default/banner.e2e.js +0 -37
  43. package/dist/collection/components/banner/test/error/banner.e2e.js +0 -15
  44. package/dist/collection/components/banner/test/information/banner.e2e.js +0 -15
  45. package/dist/collection/components/block/block.stories.js +0 -49
  46. package/dist/collection/components/breadcrumbs/breadcrumbs.stories.js +0 -36
  47. package/dist/collection/components/breadcrumbs/test/default/breadcrumbs.e2e.js +0 -33
  48. package/dist/collection/components/button/button.stories.js +0 -185
  49. package/dist/collection/components/button/test/basic/button.e2e.js +0 -35
  50. package/dist/collection/components/button/test/danger/button.e2e.js +0 -18
  51. package/dist/collection/components/button/test/disabled/button.e2e.js +0 -24
  52. package/dist/collection/components/button/test/ghost/button.e2e.js +0 -18
  53. package/dist/collection/components/button/test/icon/button.e2e.js +0 -38
  54. package/dist/collection/components/button/test/secondary/button.e2e.js +0 -18
  55. package/dist/collection/components/card/card.stories.js +0 -163
  56. package/dist/collection/components/card/test/basic/card.e2e.js +0 -10
  57. package/dist/collection/components/card/test/clickable/card.e2e.js +0 -21
  58. package/dist/collection/components/card/test/default/card.e2e.js +0 -33
  59. package/dist/collection/components/checkbox/checkbox.stories.js +0 -93
  60. package/dist/collection/components/chip/chip.stories.js +0 -230
  61. package/dist/collection/components/datetime/datetime.stories.js +0 -219
  62. package/dist/collection/components/divider/divider.stories.js +0 -62
  63. package/dist/collection/components/dropdown/dropdown.stories.js +0 -260
  64. package/dist/collection/components/dropdown/test/basic/dropdown.e2e.js +0 -41
  65. package/dist/collection/components/dropdown/test/default/dropdown.e2e.js +0 -76
  66. package/dist/collection/components/dropdown/test/error/dropdown.e2e.js +0 -36
  67. package/dist/collection/components/dropdown/test/filter/dropdown.e2e.js +0 -56
  68. package/dist/collection/components/dropdown/test/filter/hide-no-result-message/dropdown.e2e.js +0 -23
  69. package/dist/collection/components/dropdown/test/filter/normalize-text-false/dropdown.e2e.js +0 -43
  70. package/dist/collection/components/dropdown/test/multiselect/dropdown.e2e.js +0 -81
  71. package/dist/collection/components/footer/footer.stories.js +0 -145
  72. package/dist/collection/components/footer/test/default/footer.e2e.js +0 -34
  73. package/dist/collection/components/header/header.stories.js +0 -82
  74. package/dist/collection/components/header/test/default/header.e2e.js +0 -44
  75. package/dist/collection/components/icon/icon.stories.js +0 -48
  76. package/dist/collection/components/link/link.stories.js +0 -59
  77. package/dist/collection/components/message/message.stories.js +0 -109
  78. package/dist/collection/components/message/test/basic/message.e2e.js +0 -16
  79. package/dist/collection/components/message/test/error/message.e2e.js +0 -28
  80. package/dist/collection/components/message/test/information/message.e2e.js +0 -10
  81. package/dist/collection/components/message/test/success/message.e2e.js +0 -10
  82. package/dist/collection/components/message/test/warning/message.e2e.js +0 -10
  83. package/dist/collection/components/modal/modal.stories.js +0 -119
  84. package/dist/collection/components/modal/test/default/modal.e2e.js +0 -28
  85. package/dist/collection/components/modal/test/open-close/modal.e2e.js +0 -63
  86. package/dist/collection/components/modal/test/prevent-true/modal.e2e.js +0 -13
  87. package/dist/collection/components/popover-canvas/popover-canvas.stories.js +0 -92
  88. package/dist/collection/components/popover-canvas/test/default/popover-canvas.e2e.js +0 -30
  89. package/dist/collection/components/popover-canvas/test/show-false/popover-canvas.e2e.js +0 -30
  90. package/dist/collection/components/popover-canvas/test/show-true/popover-canvas.e2e.js +0 -30
  91. package/dist/collection/components/popover-menu/popover-menu.stories.js +0 -146
  92. package/dist/collection/components/popover-menu/test/default/popover-menu.e2e.js +0 -60
  93. package/dist/collection/components/popover-menu/test/icons-fluid/popover-menu.e2e.js +0 -27
  94. package/dist/collection/components/popover-menu/test/show/popover-menu.e2e.js +0 -20
  95. package/dist/collection/components/popover-menu/test/show-false/popover-menu.e2e.js +0 -20
  96. package/dist/collection/components/radio-button/radio-button.stories.js +0 -91
  97. package/dist/collection/components/side-menu/side-menu.stories.js +0 -224
  98. package/dist/collection/components/side-menu/test/collapsible/side-menu.e2e.js +0 -28
  99. package/dist/collection/components/side-menu/test/default/side-menu.e2e.js +0 -38
  100. package/dist/collection/components/slider/slider.stories.js +0 -243
  101. package/dist/collection/components/spinner/spinner.stories.js +0 -61
  102. package/dist/collection/components/stepper/stepper.stories.js +0 -95
  103. package/dist/collection/components/table/table/test/batch/table.e2e.js +0 -24
  104. package/dist/collection/components/table/table/test/default/table.e2e.js +0 -46
  105. package/dist/collection/components/table/table/test/expandable-row/table.e2e.js +0 -64
  106. package/dist/collection/components/table/table/test/filtering/table.e2e.js +0 -41
  107. package/dist/collection/components/table/table/test/multiselect/table.e2e.js +0 -47
  108. package/dist/collection/components/table/table/test/pagination/table.e2e.js +0 -53
  109. package/dist/collection/components/table/table/test/sorting/table.e2e.js +0 -36
  110. package/dist/collection/components/table/table-component-basic.stories.js +0 -184
  111. package/dist/collection/components/table/table-component-batch-actions.stories.js +0 -188
  112. package/dist/collection/components/table/table-component-custom-width.stories.js +0 -174
  113. package/dist/collection/components/table/table-component-expandable-rows.stories.js +0 -160
  114. package/dist/collection/components/table/table-component-filtering.stories.js +0 -195
  115. package/dist/collection/components/table/table-component-multiselect.stories.js +0 -211
  116. package/dist/collection/components/table/table-component-pagination.stories.js +0 -196
  117. package/dist/collection/components/table/table-component-sorting.stories.js +0 -240
  118. package/dist/collection/components/tabs/folder-tabs/folder-tabs.stories.js +0 -105
  119. package/dist/collection/components/tabs/inline-tabs/inline-tabs.stories.js +0 -99
  120. package/dist/collection/components/tabs/navigation-tabs/navigation-tabs.stories.js +0 -101
  121. package/dist/collection/components/text-field/text-field.stories.js +0 -247
  122. package/dist/collection/components/textarea/test/basic/textarea.e2e.js +0 -26
  123. package/dist/collection/components/textarea/test/default/textarea.e2e.js +0 -34
  124. package/dist/collection/components/textarea/test/read-only/textarea.e2e.js +0 -26
  125. package/dist/collection/components/textarea/textarea.stories.js +0 -188
  126. package/dist/collection/components/toast/toast.stories.js +0 -90
  127. package/dist/collection/components/toggle/toggle.stories.js +0 -95
  128. package/dist/collection/components/tooltip/tooltip.stories.js +0 -126
  129. package/dist/collection/stories/Installation/angular.stories.js +0 -111
  130. package/dist/collection/stories/Installation/javascript.stories.js +0 -99
  131. package/dist/collection/stories/Installation/react.stories.js +0 -117
  132. package/dist/collection/stories/announcements/announce-tegel.stories.js +0 -262
  133. package/dist/collection/stories/announcements/prefix-change.stories.js +0 -93
  134. package/dist/collection/stories/formatHtmlPreview.js +0 -10
  135. package/dist/collection/stories/foundations/color/color-brand.stories.js +0 -38
  136. package/dist/collection/stories/foundations/color/color-scales.stories.js +0 -71
  137. package/dist/collection/stories/foundations/color/color-semantic.stories.js +0 -40
  138. package/dist/collection/stories/foundations/grid/grid.stories.js +0 -386
  139. package/dist/collection/stories/foundations/spacing/spacing-element.stories.js +0 -100
  140. package/dist/collection/stories/foundations/spacing/spacing-layout.stories.js +0 -94
  141. package/dist/collection/stories/foundations/typography/typography-body.stories.js +0 -16
  142. package/dist/collection/stories/foundations/typography/typography-detail.stories.js +0 -17
  143. package/dist/collection/stories/foundations/typography/typography-headline.stories.js +0 -39
  144. package/dist/collection/stories/foundations/typography/typography-paragraph.stories.js +0 -12
  145. package/dist/collection/stories/patterns/navigation/navigation-basic.stories.js +0 -85
  146. package/dist/collection/stories/patterns/navigation/navigation-fewitems.stories.js +0 -259
  147. package/dist/collection/stories/patterns/navigation/navigation-manyitems.stories.js +0 -247
  148. package/dist/collection/stories/patterns/navigation/navigation-user-menu.stories.js +0 -140
  149. package/dist/collection/stories/tegel.stories.js +0 -283
  150. package/dist/collection/stories/utility/color/background-color.stories.js +0 -96
  151. package/dist/collection/stories/utility/color/text-color.stories.js +0 -94
  152. package/dist/tegel/p-556600b1.entry.js +0 -1
  153. package/dist/tegel/p-c6553022.entry.js +0 -1
  154. package/dist/tegel/p-f801cf0e.entry.js +0 -1
  155. package/dist/types/components/accordion/accordion.stories.d.ts +0 -77
  156. package/dist/types/components/badge/badge.stories.d.ts +0 -73
  157. package/dist/types/components/banner/banner.stories.d.ts +0 -69
  158. package/dist/types/components/block/block.stories.d.ts +0 -32
  159. package/dist/types/components/breadcrumbs/breadcrumbs.stories.d.ts +0 -16
  160. package/dist/types/components/button/button.stories.d.ts +0 -147
  161. package/dist/types/components/card/card.stories.d.ts +0 -128
  162. package/dist/types/components/checkbox/checkbox.stories.d.ts +0 -65
  163. package/dist/types/components/chip/chip.stories.d.ts +0 -99
  164. package/dist/types/components/datetime/datetime.stories.d.ts +0 -151
  165. package/dist/types/components/divider/divider.stories.d.ts +0 -58
  166. package/dist/types/components/dropdown/dropdown.stories.d.ts +0 -205
  167. package/dist/types/components/footer/footer.stories.d.ts +0 -44
  168. package/dist/types/components/header/header.stories.d.ts +0 -32
  169. package/dist/types/components/icon/icon.stories.d.ts +0 -36
  170. package/dist/types/components/link/link.stories.d.ts +0 -44
  171. package/dist/types/components/message/message.stories.d.ts +0 -88
  172. package/dist/types/components/modal/modal.stories.d.ts +0 -78
  173. package/dist/types/components/popover-canvas/popover-canvas.stories.d.ts +0 -27
  174. package/dist/types/components/popover-menu/popover-menu.stories.d.ts +0 -51
  175. package/dist/types/components/radio-button/radio-button.stories.d.ts +0 -39
  176. package/dist/types/components/side-menu/side-menu.stories.d.ts +0 -65
  177. package/dist/types/components/slider/slider.stories.d.ts +0 -235
  178. package/dist/types/components/spinner/spinner.stories.d.ts +0 -46
  179. package/dist/types/components/stepper/stepper.stories.d.ts +0 -80
  180. package/dist/types/components/table/table-component-basic.stories.d.ts +0 -144
  181. package/dist/types/components/table/table-component-batch-actions.stories.d.ts +0 -139
  182. package/dist/types/components/table/table-component-custom-width.stories.d.ts +0 -131
  183. package/dist/types/components/table/table-component-expandable-rows.stories.d.ts +0 -131
  184. package/dist/types/components/table/table-component-filtering.stories.d.ts +0 -131
  185. package/dist/types/components/table/table-component-multiselect.stories.d.ts +0 -147
  186. package/dist/types/components/table/table-component-pagination.stories.d.ts +0 -131
  187. package/dist/types/components/table/table-component-sorting.stories.d.ts +0 -183
  188. package/dist/types/components/tabs/folder-tabs/folder-tabs.stories.d.ts +0 -69
  189. package/dist/types/components/tabs/inline-tabs/inline-tabs.stories.d.ts +0 -61
  190. package/dist/types/components/tabs/navigation-tabs/navigation-tabs.stories.d.ts +0 -61
  191. package/dist/types/components/text-field/text-field.stories.d.ts +0 -201
  192. package/dist/types/components/textarea/textarea.stories.d.ts +0 -139
  193. package/dist/types/components/toast/toast.stories.d.ts +0 -64
  194. package/dist/types/components/toggle/toggle.stories.d.ts +0 -74
  195. package/dist/types/components/tooltip/tooltip.stories.d.ts +0 -66
  196. package/dist/types/stories/Installation/angular.stories.d.ts +0 -6
  197. package/dist/types/stories/Installation/javascript.stories.d.ts +0 -7
  198. package/dist/types/stories/Installation/react.stories.d.ts +0 -6
  199. package/dist/types/stories/announcements/announce-tegel.stories.d.ts +0 -6
  200. package/dist/types/stories/announcements/prefix-change.stories.d.ts +0 -6
  201. package/dist/types/stories/formatHtmlPreview.d.ts +0 -2
  202. package/dist/types/stories/foundations/color/color-brand.stories.d.ts +0 -13
  203. package/dist/types/stories/foundations/color/color-scales.stories.d.ts +0 -30
  204. package/dist/types/stories/foundations/color/color-semantic.stories.d.ts +0 -13
  205. package/dist/types/stories/foundations/grid/grid.stories.d.ts +0 -35
  206. package/dist/types/stories/foundations/spacing/spacing-element.stories.d.ts +0 -8
  207. package/dist/types/stories/foundations/spacing/spacing-layout.stories.d.ts +0 -8
  208. package/dist/types/stories/foundations/typography/typography-body.stories.d.ts +0 -8
  209. package/dist/types/stories/foundations/typography/typography-detail.stories.d.ts +0 -8
  210. package/dist/types/stories/foundations/typography/typography-headline.stories.d.ts +0 -21
  211. package/dist/types/stories/foundations/typography/typography-paragraph.stories.d.ts +0 -8
  212. package/dist/types/stories/patterns/navigation/navigation-basic.stories.d.ts +0 -23
  213. package/dist/types/stories/patterns/navigation/navigation-fewitems.stories.d.ts +0 -23
  214. package/dist/types/stories/patterns/navigation/navigation-manyitems.stories.d.ts +0 -38
  215. package/dist/types/stories/patterns/navigation/navigation-user-menu.stories.d.ts +0 -33
  216. package/dist/types/stories/tegel.stories.d.ts +0 -6
  217. package/dist/types/stories/utility/color/background-color.stories.d.ts +0 -64
  218. package/dist/types/stories/utility/color/text-color.stories.d.ts +0 -64
@@ -1,119 +0,0 @@
1
- import formatHtmlPreview from "../../stories/formatHtmlPreview";
2
- import readme from "./readme.md";
3
- import { ComponentsFolder } from "../../utils/constants";
4
- export default {
5
- title: `${ComponentsFolder}/Modal`,
6
- parameters: {
7
- layout: 'fullscreen',
8
- notes: readme,
9
- design: [
10
- {
11
- name: 'Figma',
12
- type: 'figma',
13
- url: 'https://www.figma.com/file/d8bTgEx7h694MSesi2CTLF/Tegel-UI-Library?node-id=4398%3A181325&t=Ne6myqwca5m00de7-1',
14
- },
15
- {
16
- name: 'Link',
17
- type: 'link',
18
- url: 'https://www.figma.com/file/d8bTgEx7h694MSesi2CTLF/Tegel-UI-Library?node-id=4398%3A181325&t=Ne6myqwca5m00de7-1',
19
- },
20
- ],
21
- },
22
- argTypes: {
23
- actionsPosition: {
24
- name: 'Actions position',
25
- description: "Defines the postion of Modal action's slot - if slot scrolls or stays on top of the content.",
26
- control: {
27
- type: 'radio',
28
- },
29
- options: ['Sticky', 'Static'],
30
- table: {
31
- defaultValue: { summary: 'static' },
32
- },
33
- },
34
- size: {
35
- name: 'Size',
36
- description: 'Sets the size of Modal.',
37
- control: {
38
- type: 'radio',
39
- },
40
- options: ['Large', 'Medium', 'Small', 'Extra small'],
41
- table: {
42
- defaultValue: { summary: 'md' },
43
- },
44
- },
45
- headerText: {
46
- name: 'Modal header',
47
- description: 'Sets the header text of the Modal.',
48
- control: {
49
- type: 'text',
50
- },
51
- },
52
- bodyContent: {
53
- name: 'Modal body text',
54
- description: 'Sets the body content of the Modal.',
55
- control: {
56
- type: 'text',
57
- },
58
- },
59
- showModal: {
60
- name: 'Show Modal',
61
- description: 'Toggles if the Modal is displayed.',
62
- control: {
63
- type: 'boolean',
64
- },
65
- },
66
- prevent: {
67
- name: 'Prevent',
68
- description: 'Disables closing Modal on clicking on overlay area.',
69
- control: {
70
- type: 'boolean',
71
- },
72
- },
73
- },
74
- args: {
75
- actionsPosition: 'Static',
76
- size: 'Large',
77
- headerText: 'The buttons for the Modal only works in the canvas tab',
78
- bodyContent: 'The steps fell lightly and oddly, with a certain swing, for all they went so slowly; it was different indeed from the heavy creaking tread of Henry Jekyll. Utterson sighed. “Is there never anything else?” he asked.',
79
- showModal: true,
80
- prevent: false,
81
- },
82
- };
83
- const sizeLookUp = {
84
- 'Large': 'lg',
85
- 'Medium': 'md',
86
- 'Small': 'sm',
87
- 'Extra small': 'xs',
88
- };
89
- const ModalTemplate = ({ actionsPosition, size, headerText, bodyContent, showModal, prevent }) => formatHtmlPreview(`
90
- <!-- The button below is just for demo purposes -->
91
- <tds-button id="my-modal-button" text="Open Modal"></tds-button>
92
-
93
-
94
- <tds-modal
95
- header="${headerText}"
96
- selector="#my-modal-button"
97
- ${showModal ? 'show' : ''}
98
- id="my-modal" size="${sizeLookUp[size]}"
99
- actions-position="${actionsPosition.toLowerCase()}"
100
- prevent="${prevent}"
101
- >
102
- <span slot="body">
103
- ${bodyContent}
104
- </span>
105
- <span slot='actions' class='tds-u-flex tds-u-gap2'>
106
- <tds-button data-dismiss-modal size="md" text="Delete" variant="danger"></tds-button>
107
- <tds-button data-dismiss-modal size="md" text="Cancel" variant="secondary"></tds-button>
108
- </span>
109
- </tds-modal>
110
-
111
- <!-- The script below is just for demo purposes -->
112
- <script>
113
- modal = document.querySelector('tds-modal')
114
- modal.addEventListener('tdsClose', (event) => {
115
- console.log(event)
116
- })
117
- </script>
118
- `);
119
- export const Default = ModalTemplate.bind({});
@@ -1,28 +0,0 @@
1
- import { test } from "stencil-playwright";
2
- import { expect } from "@playwright/test";
3
- const componentTestPath = 'src/components/modal/test/default/index.html';
4
- test.describe('tds-modal-default', () => {
5
- test('renders modal correctly', async ({ page }) => {
6
- await page.goto(componentTestPath);
7
- const tdsModal = page.getByTestId('tds-modal-testid');
8
- await expect(tdsModal).toHaveCount(1);
9
- await expect(page).toHaveScreenshot({ maxDiffPixels: 0 });
10
- });
11
- test('modal contains three buttons', async ({ page }) => {
12
- await page.goto(componentTestPath);
13
- // Locate the buttons within the modal
14
- const modalButtons = page.getByRole('button');
15
- // Assert that there are three buttons
16
- await expect(modalButtons).toHaveCount(3);
17
- });
18
- test('modal contains a header and a body', async ({ page }) => {
19
- await page.goto(componentTestPath);
20
- const modalHeader = page.getByText('This is a header', { exact: true });
21
- const modalBody = page.getByText('Where you can put anything you want!', {
22
- exact: true,
23
- });
24
- // Assert that there are three buttons
25
- await expect(modalHeader).toBeVisible();
26
- await expect(modalBody).toBeVisible();
27
- });
28
- });
@@ -1,63 +0,0 @@
1
- import { test } from "stencil-playwright";
2
- import { expect } from "@playwright/test";
3
- const componentTestPath = 'src/components/modal/test/open-close/index.html';
4
- test.describe('tds-modal-open', () => {
5
- test.beforeEach(async ({ page }) => {
6
- await page.goto(componentTestPath);
7
- });
8
- test('Modal is closed by default', async ({ page }) => {
9
- const tdsModal = page.locator('tds-modal');
10
- await expect(tdsModal).toBeHidden(); // Modal is initially closed
11
- await expect(page).toHaveScreenshot({ maxDiffPixels: 0 });
12
- });
13
- test('[Open Modal] button exists', async ({ page }) => {
14
- const openModalButton = page.getByRole('button').filter({ hasText: /Open Modal/ });
15
- await expect(openModalButton).toBeVisible(); // [Open Modal] button exists and is visible
16
- });
17
- test('Open modal using selector', async ({ page }) => {
18
- const openModalButton = page.getByRole('button').filter({ hasText: /Open Modal/ });
19
- await openModalButton.dispatchEvent('click');
20
- const modalSelector = 'tds-modal'; // Adjust the selector to match your modal's attributes
21
- await page.waitForSelector(modalSelector);
22
- const modal = await page.locator(modalSelector);
23
- await expect(modal).toBeVisible(); // Modal should be open when using selector
24
- });
25
- test('Clicking [Open Modal] button opens the modal', async ({ page }) => {
26
- const openModalButton = page.getByRole('button').filter({ hasText: /Open Modal/ });
27
- const tdsModal = page.locator('tds-modal');
28
- await openModalButton.dispatchEvent('click');
29
- // Assert that the modal is visible
30
- await expect(tdsModal).toBeVisible();
31
- await expect(page).toHaveScreenshot({ maxDiffPixels: 0 });
32
- });
33
- test('Clicking [Delete] button closes the modal', async ({ page }) => {
34
- const deleteButton = page.getByRole('button').filter({ hasText: /Delete/ });
35
- const openModalButton = page.getByRole('button').filter({ hasText: /Open Modal/ });
36
- const tdsModal = page.locator('tds-modal');
37
- await openModalButton.dispatchEvent('click');
38
- await expect(tdsModal).toBeVisible();
39
- await expect(deleteButton).toBeVisible();
40
- await expect(page).toHaveScreenshot({ maxDiffPixels: 0 });
41
- await deleteButton.dispatchEvent('click'); // Click [Delete] button
42
- await expect(deleteButton).toBeHidden(); // button is removed
43
- await expect(tdsModal).toBeHidden();
44
- });
45
- test('Clicking [Close] button closes the modal', async ({ page }) => {
46
- const closeButton = page.locator('button[aria-label="close"]');
47
- const tdsModal = page.locator('tds-modal');
48
- // Now, close the modal
49
- await closeButton.dispatchEvent('click');
50
- await expect(tdsModal).toBeHidden(); // Modal should be closed after clicking Close
51
- });
52
- test('Clicking on area outside modal closes the modal', async ({ page }) => {
53
- const tdsModalBackdrop = page.locator('.tds-modal-backdrop');
54
- const tdsModal = page.locator('tds-modal');
55
- // First, open the modal
56
- const openModalButton = page.getByRole('button').filter({ hasText: /Open Modal/ });
57
- await openModalButton.dispatchEvent('click');
58
- await expect(tdsModal).toBeVisible(); // Modal should be open
59
- // Now, close the modal by clicking outside
60
- await tdsModalBackdrop.dispatchEvent('click');
61
- await expect(tdsModal).toBeHidden(); // Modal should be closed after clicking outside
62
- });
63
- });
@@ -1,13 +0,0 @@
1
- import { test, expect } from "@playwright/test";
2
- const componentTestPath = 'src/components/modal/test/prevent-true/index.html';
3
- test.describe('tds-modal-open', () => {
4
- test.beforeEach(async ({ page }) => {
5
- await page.goto(componentTestPath);
6
- });
7
- test('Prevent = true: Clicking on area outside modal does not close the modal', async ({ page, }) => {
8
- const tdsModalBackdrop = page.locator('.tds-modal-backdrop');
9
- const tdsModal = page.locator('tds-modal');
10
- await tdsModalBackdrop.dispatchEvent('click');
11
- await expect(tdsModal).toBeVisible(); // Modal should remain open when prevent is true
12
- });
13
- });
@@ -1,92 +0,0 @@
1
- import formatHtmlPreview from "../../stories/formatHtmlPreview";
2
- import readme from "./readme.md";
3
- import { ComponentsFolder } from "../../utils/constants";
4
- export default {
5
- title: `${ComponentsFolder}/Popover Canvas`,
6
- parameters: {
7
- layout: 'centered',
8
- notes: readme,
9
- },
10
- argTypes: {
11
- canvasPosition: {
12
- name: 'Canvas position',
13
- description: 'Sets the position of the Popover Canvas.',
14
- control: {
15
- type: 'select',
16
- },
17
- options: [
18
- 'Bottom',
19
- 'Bottom start',
20
- 'Bottom end',
21
- 'Top',
22
- 'Top start',
23
- 'Top end',
24
- 'Left',
25
- 'Left start',
26
- 'Left end',
27
- 'Right',
28
- 'Right start',
29
- 'Right end',
30
- 'Auto',
31
- ],
32
- table: {
33
- defaultValue: { summary: 'auto' },
34
- },
35
- },
36
- },
37
- args: {
38
- canvasPosition: 'Auto',
39
- },
40
- };
41
- const ComponentPopoverCanvas = ({ canvasPosition }) => {
42
- const canvasPosLookup = {
43
- 'Bottom': 'bottom',
44
- 'Bottom start': 'bottom-start',
45
- 'Bottom end': 'bottom-end',
46
- 'Top': 'top',
47
- 'Top start': 'top-start',
48
- 'Top end': 'top-end',
49
- 'Left': 'left',
50
- 'Left start': 'left-start',
51
- 'Left end': 'left-end',
52
- 'Right': 'right',
53
- 'Right start': 'right-start',
54
- 'Right end': 'right-end',
55
- 'Auto': 'auto',
56
- };
57
- return formatHtmlPreview(`
58
- <style>
59
- /* demo-wrapper and demo-styles is for demonstration purposes only */
60
- .demo-wrapper {
61
- display: flex;
62
- flex-wrap; nowrap;
63
- align-items: center;
64
- }
65
- </style>
66
-
67
- <!-- The 'referenceEl' prop can be used instead of 'selector',
68
- wich might be preferable in frameworks like React -->
69
- <tds-popover-canvas
70
- placement="${canvasPosLookup[canvasPosition]}"
71
- selector="#trigger"
72
- class="tds-u-p2">
73
- <h2 class="tds-headline-02 tds-u-mt0">A Popover Canvas!</h2>
74
- <p class="tds-body-01">
75
- Where you can put anything you want!
76
- </p>
77
- <tds-link>
78
- <a target="_blank" rel="noopener noreferrer" href="https://tegel.scania.com">Even links!</a>
79
- </tds-link>
80
- </tds-popover-canvas>
81
-
82
- <!-- demo-wrapper code below is for demonstration purposes only -->
83
- <div class="demo-wrapper">
84
- <span class="tds-u-mr2">Click icon for Popover Canvas</span>
85
-
86
- <tds-button aria-label="menu" only-icon id="trigger" type="secondary" size="sm">
87
- <tds-icon slot="icon" size="16px" name="kebab"></tds-icon>
88
- </tds-button>
89
- </div>
90
- `);
91
- };
92
- export const Default = ComponentPopoverCanvas.bind({});
@@ -1,30 +0,0 @@
1
- import { test } from "stencil-playwright";
2
- import { expect } from "@playwright/test";
3
- const componentTestPath = 'src/components/popover-canvas/test/default/index.html';
4
- test.describe('tds-popover-canvas-default', () => {
5
- test('renders default popover-canvas correctly', async ({ page }) => {
6
- await page.goto(componentTestPath);
7
- const triggerButton = page.getByRole('button');
8
- await triggerButton.click();
9
- /* Check diff on screenshot */
10
- await expect(page).toHaveScreenshot({ maxDiffPixels: 0 });
11
- });
12
- test('make sure popover canvas shows after trigger button is pressed and content is displayed', async ({ page, }) => {
13
- await page.goto(componentTestPath);
14
- const triggerButton = page.getByRole('button');
15
- const popoverCanvasHeader = page.getByRole('heading');
16
- const popoverCanvasBody = page.getByText('Where you can put anything you want!', {
17
- exact: true,
18
- });
19
- const popoverCanvasLink = page.getByRole('link');
20
- await expect(triggerButton).toBeVisible();
21
- await expect(popoverCanvasHeader).toBeHidden();
22
- await expect(popoverCanvasBody).toBeHidden();
23
- await expect(popoverCanvasLink).toBeHidden();
24
- await triggerButton.click();
25
- await expect(triggerButton).toBeVisible();
26
- await expect(popoverCanvasHeader).toBeVisible();
27
- await expect(popoverCanvasBody).toBeVisible();
28
- await expect(popoverCanvasLink).toBeVisible();
29
- });
30
- });
@@ -1,30 +0,0 @@
1
- import { test } from "stencil-playwright";
2
- import { expect } from "@playwright/test";
3
- const componentTestPath = 'src/components/popover-canvas/test/show-false/index.html';
4
- test.describe('tds-popover-canvas-show-false', () => {
5
- test('renders show=false popover-canvas correctly', async ({ page }) => {
6
- await page.goto(componentTestPath);
7
- const triggerButton = page.getByRole('button');
8
- await triggerButton.click();
9
- /* Check diff on screenshot */
10
- await expect(page).toHaveScreenshot({ maxDiffPixels: 0 });
11
- });
12
- test('make sure popover canvas does not show after trigger button is pressed and content is not displayed before or after button click', async ({ page, }) => {
13
- await page.goto(componentTestPath);
14
- const triggerButton = page.getByRole('button');
15
- const popoverCanvasHeader = page.getByRole('heading');
16
- const popoverCanvasBody = page.getByText('Where you can put anything you want!', {
17
- exact: true,
18
- });
19
- const popoverCanvasLink = page.getByRole('link');
20
- await expect(triggerButton).toBeVisible();
21
- await expect(popoverCanvasHeader).toBeHidden();
22
- await expect(popoverCanvasBody).toBeHidden();
23
- await expect(popoverCanvasLink).toBeHidden();
24
- await triggerButton.click();
25
- await expect(triggerButton).toBeVisible();
26
- await expect(popoverCanvasHeader).toBeHidden();
27
- await expect(popoverCanvasBody).toBeHidden();
28
- await expect(popoverCanvasLink).toBeHidden();
29
- });
30
- });
@@ -1,30 +0,0 @@
1
- import { test } from "stencil-playwright";
2
- import { expect } from "@playwright/test";
3
- const componentTestPath = 'src/components/popover-canvas/test/show-true/index.html';
4
- test.describe('tds-popover-canvas-show-true', () => {
5
- test('renders show=true popover-canvas correctly', async ({ page }) => {
6
- await page.goto(componentTestPath);
7
- const triggerButton = page.getByRole('button');
8
- await triggerButton.click();
9
- /* Check diff on screenshot */
10
- await expect(page).toHaveScreenshot({ maxDiffPixels: 0 });
11
- });
12
- test('make sure the popover canvas content is displayed both before and after the trigger button is pressed', async ({ page, }) => {
13
- await page.goto(componentTestPath);
14
- const triggerButton = page.getByRole('button');
15
- const popoverCanvasHeader = page.getByRole('heading');
16
- const popoverCanvasBody = page.getByText('Where you can put anything you want!', {
17
- exact: true,
18
- });
19
- const popoverCanvasLink = page.getByRole('link');
20
- await expect(triggerButton).toBeVisible();
21
- await expect(popoverCanvasHeader).toBeVisible();
22
- await expect(popoverCanvasBody).toBeVisible();
23
- await expect(popoverCanvasLink).toBeVisible();
24
- await triggerButton.click();
25
- await expect(triggerButton).toBeVisible();
26
- await expect(popoverCanvasHeader).toBeVisible();
27
- await expect(popoverCanvasBody).toBeVisible();
28
- await expect(popoverCanvasLink).toBeVisible();
29
- });
30
- });
@@ -1,146 +0,0 @@
1
- import formatHtmlPreview from "../../stories/formatHtmlPreview";
2
- import popoverMenuReadme from "./readme.md";
3
- import popoverMenuItemReadme from "./popover-menu-item/readme.md";
4
- import { ComponentsFolder } from "../../utils/constants";
5
- export default {
6
- title: `${ComponentsFolder}/Popover Menu`,
7
- parameters: {
8
- layout: 'centered',
9
- notes: { 'Popover Menu': popoverMenuReadme, 'Popover Menu Item': popoverMenuItemReadme },
10
- design: [
11
- {
12
- name: 'Figma',
13
- type: 'figma',
14
- url: 'https://www.figma.com/file/d8bTgEx7h694MSesi2CTLF/Tegel-UI-Library?node-id=16794%3A59241&t=Ne6myqwca5m00de7-1',
15
- },
16
- {
17
- name: 'Link',
18
- type: 'link',
19
- url: 'https://www.figma.com/file/d8bTgEx7h694MSesi2CTLF/Tegel-UI-Library?node-id=16794%3A59241&t=Ne6myqwca5m00de7-1',
20
- },
21
- ],
22
- },
23
- argTypes: {
24
- menuPosition: {
25
- name: 'Menu position',
26
- description: 'Sets the position of the Popover Menu.',
27
- control: {
28
- type: 'select',
29
- },
30
- options: [
31
- 'Bottom',
32
- 'Bottom start',
33
- 'Bottom end',
34
- 'Top',
35
- 'Top start',
36
- 'Top end',
37
- 'Left',
38
- 'Left start',
39
- 'Left end',
40
- 'Right',
41
- 'Right start',
42
- 'Right end',
43
- 'Auto',
44
- ],
45
- table: {
46
- defaultValue: { summary: 'auto' },
47
- },
48
- },
49
- icons: {
50
- name: 'Icons',
51
- description: 'Shows the Popover Menu with/without icons.',
52
- control: {
53
- type: 'boolean',
54
- },
55
- },
56
- fluidWidth: {
57
- name: 'Fluid width',
58
- description: 'Unsets the width of the Popover Menu.',
59
- control: {
60
- type: 'boolean',
61
- },
62
- },
63
- },
64
- args: {
65
- menuPosition: 'Auto',
66
- icons: false,
67
- fluidWidth: false,
68
- },
69
- };
70
- const Template = ({ menuPosition, icons, fluidWidth }) => {
71
- const menuPosLookup = {
72
- 'Bottom': 'bottom',
73
- 'Bottom start': 'bottom-start',
74
- 'Bottom end': 'bottom-end',
75
- 'Top': 'top',
76
- 'Top start': 'top-start',
77
- 'Top end': 'top-end',
78
- 'Left': 'left',
79
- 'Left start': 'left-start',
80
- 'Left end': 'left-end',
81
- 'Right': 'right',
82
- 'Right start': 'right-start',
83
- 'Right end': 'right-end',
84
- 'Auto': 'auto',
85
- };
86
- return formatHtmlPreview(`
87
- <style>
88
- /* demo-wrapper styles is for demonstration purposes only */
89
- .demo-wrapper {
90
- display: flex;
91
- flex-wrap: nowrap;
92
- align-items: center;
93
- }
94
- </style>
95
-
96
- <tds-popover-menu
97
- id="my-popover-menu"
98
- placement="${menuPosLookup[menuPosition]}"
99
- ${fluidWidth ? 'fluid-width' : ''}
100
- selector="#my-popover-button"
101
- >
102
- <tds-popover-menu-item>
103
- <a href="#"> ${icons ? '<tds-icon name="share"></tds-icon>' : ''} Action </a>
104
- </tds-popover-menu-item>
105
- <tds-divider></tds-divider>
106
- <tds-popover-menu-item>
107
- <a href="#"> ${icons ? '<tds-icon name="share"></tds-icon>' : ''} ${fluidWidth ? 'The menu width adjusts to the widest word' : 'Action'} </a>
108
- </tds-popover-menu-item>
109
- <tds-popover-menu-item>
110
- <a href="#"> ${icons ? '<tds-icon name="share"></tds-icon>' : ''} Action </a>
111
- </tds-popover-menu-item>
112
- <tds-popover-menu-item disabled>
113
- <button> ${icons ? '<tds-icon name="share"></tds-icon>' : ''} Action </button>
114
- </tds-popover-menu-item>
115
- <tds-divider></tds-divider>
116
- <tds-popover-menu-item>
117
- <a href="#"> ${icons ? '<tds-icon name="share"></tds-icon>' : ''} Action </a>
118
- </tds-popover-menu-item>
119
- <tds-popover-menu-item>
120
- <a href="#"> ${icons ? '<tds-icon name="share"></tds-icon>' : ''} Action </a>
121
- </tds-popover-menu-item>
122
- <tds-popover-menu-item>
123
- <a href="#"> ${icons ? '<tds-icon name="share"></tds-icon>' : ''} Action </a>
124
- </tds-popover-menu-item>
125
- <tds-divider></tds-divider>
126
- <tds-popover-menu-item>
127
- <a href="#"> ${icons ? '<tds-icon name="share"></tds-icon>' : ''} Action </a>
128
- </tds-popover-menu-item>
129
- <tds-popover-menu-item>
130
- <button> ${icons ? '<tds-icon name="share"></tds-icon>' : ''} Action </button>
131
- </tds-popover-menu-item>
132
- </tds-popover-menu>
133
-
134
- <!-- demo-wrapper code below is for demonstration purposes only -->
135
- <div class="demo-wrapper">
136
- <span class="tds-u-mr2">Click icon for Popover Menu</span>
137
-
138
- <tds-button aria-label="menu" only-icon id="my-popover-button" type="ghost" size="sm">
139
- <tds-icon slot="icon" size="16px" name="kebab"></tds-icon>
140
- </tds-button>
141
- </div>
142
-
143
-
144
- `);
145
- };
146
- export const Default = Template.bind({});
@@ -1,60 +0,0 @@
1
- import { test } from "stencil-playwright";
2
- import { expect } from "@playwright/test";
3
- const componentTestPath = 'src/components/popover-menu/test/default/index.html';
4
- test.describe('tds-popover-menu-default', () => {
5
- test('renders default popover-menu correctly', async ({ page }) => {
6
- await page.goto(componentTestPath);
7
- const triggerButton = page.getByRole('button').filter({ has: page.getByRole('img') });
8
- await triggerButton.click();
9
- /* Check diff on screenshot */
10
- await expect(page).toHaveScreenshot({ maxDiffPixels: 0 });
11
- });
12
- test('clicking the trigger button should open the popover menu dialog', async ({ page }) => {
13
- await page.goto(componentTestPath);
14
- const triggerButton = page.getByRole('button').filter({ has: page.getByRole('img') });
15
- const dropDownList = page.getByRole('list');
16
- await expect(triggerButton).toBeVisible();
17
- await expect(dropDownList).toBeHidden();
18
- await triggerButton.click();
19
- await expect(triggerButton).toBeVisible();
20
- await expect(dropDownList).toBeVisible();
21
- const tdsMenuItemListItems = dropDownList.getByRole('listitem');
22
- await expect(tdsMenuItemListItems).toHaveCount(9);
23
- const tdsMenuItemListItemLinks = tdsMenuItemListItems.getByRole('link');
24
- const tdsMenuItemListItemButtons = tdsMenuItemListItems.getByRole('button');
25
- await expect(tdsMenuItemListItemLinks).toHaveCount(7);
26
- await expect(tdsMenuItemListItemButtons).toHaveCount(2);
27
- });
28
- test('hover active menu item -> active item should be clickable', async ({ page }) => {
29
- await page.goto(componentTestPath);
30
- const triggerButton = page.getByRole('button').filter({ has: page.getByRole('img') });
31
- const dropDownList = page.getByRole('list');
32
- await triggerButton.click();
33
- const tdsMenuItemListItemLinks = page
34
- .getByRole('listitem')
35
- .filter({ has: page.getByRole('link') });
36
- const myEventSpy = await page.spyOnEvent('click');
37
- await tdsMenuItemListItemLinks.first().click();
38
- expect(myEventSpy).toHaveReceivedEvent();
39
- /* Expect dropdown not to close after clicking the menu item */
40
- await expect(dropDownList).toBeVisible();
41
- });
42
- test('hover inactive menu item -> inactive menu item should not be clickable', async ({ page, }) => {
43
- await page.goto(componentTestPath);
44
- const triggerButton = page.getByRole('button').filter({ has: page.getByRole('img') });
45
- await triggerButton.click();
46
- const tdsMenuItemListItemButtons = page
47
- .getByRole('listitem')
48
- .filter({ has: page.getByRole('button') });
49
- await expect(tdsMenuItemListItemButtons).toHaveCount(2);
50
- await expect(tdsMenuItemListItemButtons.first()).toHaveAttribute('disabled');
51
- await expect(tdsMenuItemListItemButtons.last()).not.toHaveAttribute('disabled');
52
- });
53
- test('icons are not existing for menu items', async ({ page }) => {
54
- await page.goto(componentTestPath);
55
- const tdsMenuItemListItemIcons = page
56
- .getByRole('listitem')
57
- .filter({ has: page.getByRole('img') });
58
- await expect(tdsMenuItemListItemIcons).toHaveCount(0);
59
- });
60
- });
@@ -1,27 +0,0 @@
1
- import { test } from "stencil-playwright";
2
- import { expect } from "@playwright/test";
3
- const componentTestPath = 'src/components/popover-menu/test/icons-fluid/index.html';
4
- test.describe('tds-popover-menu-icons-fluid', () => {
5
- test('renders icons-fluid popover-menu correctly', async ({ page }) => {
6
- await page.goto(componentTestPath);
7
- const triggerButton = page.getByRole('button').filter({ has: page.getByRole('img') });
8
- await triggerButton.click();
9
- /* Check diff on screenshot */
10
- await expect(page).toHaveScreenshot({ maxDiffPixels: 0 });
11
- });
12
- test('menu item "The menu with adjusts to the widest word" exists', async ({ page }) => {
13
- await page.goto(componentTestPath);
14
- const tdsMenuItemListLongText = page.getByText('The menu width adjusts to the widest word');
15
- await expect(tdsMenuItemListLongText).toHaveCount(1);
16
- await expect(tdsMenuItemListLongText).toBeHidden();
17
- });
18
- test('icons are existing for menu items', async ({ page }) => {
19
- await page.goto(componentTestPath);
20
- const triggerButton = page.getByRole('button').filter({ has: page.getByRole('img') });
21
- await triggerButton.click();
22
- const tdsMenuItemListItemIcons = page
23
- .getByRole('listitem')
24
- .filter({ has: page.getByRole('img') });
25
- await expect(tdsMenuItemListItemIcons).toHaveCount(9);
26
- });
27
- });