@otto-de/b2b-core-components 1.5.0 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/b2b-core-components/b2b-core-components.esm.js +1 -1
- package/dist/b2b-core-components/p-01fd54a1.entry.js +1 -0
- package/dist/b2b-core-components/{p-b95089a7.entry.js → p-04fc18cd.entry.js} +1 -1
- package/dist/b2b-core-components/{p-c20baf90.entry.js → p-077217b3.entry.js} +1 -1
- package/dist/b2b-core-components/{p-03beebf5.entry.js → p-0965b990.entry.js} +1 -1
- package/dist/b2b-core-components/p-0beabdb4.entry.js +1 -0
- package/dist/b2b-core-components/p-163466cf.entry.js +1 -0
- package/dist/b2b-core-components/p-197c1a6d.entry.js +1 -0
- package/dist/b2b-core-components/{p-75f84f53.entry.js → p-1d007eea.entry.js} +1 -1
- package/dist/b2b-core-components/{p-6997ceb0.entry.js → p-1e2752b2.entry.js} +1 -1
- package/dist/b2b-core-components/{p-06ef4c5e.entry.js → p-2328144b.entry.js} +1 -1
- package/dist/b2b-core-components/{p-9184036b.entry.js → p-2ad8bdb6.entry.js} +1 -1
- package/dist/b2b-core-components/p-2d01e68a.entry.js +1 -0
- package/dist/b2b-core-components/{p-60c7f6f7.entry.js → p-3c0671ef.entry.js} +1 -1
- package/dist/b2b-core-components/p-42e7f397.entry.js +1 -0
- package/dist/b2b-core-components/{p-163fe245.entry.js → p-44ccd8f4.entry.js} +1 -1
- package/dist/b2b-core-components/{p-38791fb9.entry.js → p-542a358a.entry.js} +1 -1
- package/dist/b2b-core-components/p-54fd68eb.entry.js +1 -0
- package/dist/b2b-core-components/p-60badad5.entry.js +1 -0
- package/dist/b2b-core-components/{p-e1622cb8.entry.js → p-6140304e.entry.js} +1 -1
- package/dist/b2b-core-components/p-62e43f91.entry.js +1 -0
- package/dist/b2b-core-components/{p-f0aa5e83.entry.js → p-681d6880.entry.js} +1 -1
- package/dist/b2b-core-components/{p-bcf36531.entry.js → p-8ad1bb92.entry.js} +1 -1
- package/dist/b2b-core-components/p-90a3ffed.entry.js +1 -0
- package/dist/b2b-core-components/p-97ef9805.entry.js +1 -0
- package/dist/b2b-core-components/{p-48d4d224.entry.js → p-a50ea33f.entry.js} +1 -1
- package/dist/b2b-core-components/{p-c8294029.entry.js → p-b3ccfc58.entry.js} +1 -1
- package/dist/b2b-core-components/{p-2b3a67db.entry.js → p-b6a8a06f.entry.js} +1 -1
- package/dist/b2b-core-components/{p-5c2db521.entry.js → p-b8049234.entry.js} +1 -1
- package/dist/b2b-core-components/p-c294dd0c.entry.js +1 -0
- package/dist/b2b-core-components/{p-5d7866e8.entry.js → p-d07210e2.entry.js} +1 -1
- package/dist/b2b-core-components/p-d7bb8aa1.entry.js +1 -0
- package/dist/b2b-core-components/{p-76e240f8.entry.js → p-d83c2084.entry.js} +1 -1
- package/dist/b2b-core-components/{p-dcd80266.entry.js → p-db7d2ec3.entry.js} +1 -1
- package/dist/b2b-core-components/{p-9facba86.entry.js → p-dd79ab5b.entry.js} +1 -1
- package/dist/b2b-core-components/{p-bda69b9a.entry.js → p-e5b78075.entry.js} +1 -1
- package/dist/b2b-core-components/{p-7b04f40b.entry.js → p-e811411a.entry.js} +1 -1
- package/dist/b2b-core-components/p-f190bf79.entry.js +1 -0
- package/dist/b2b-core-components/{p-1e1bdb50.entry.js → p-f24515bf.entry.js} +1 -1
- package/dist/b2b-core-components/p-f3ce95bf.js +2 -0
- package/dist/b2b-core-components/p-f7e9f889.entry.js +1 -0
- package/dist/cjs/b2b-alert.cjs.entry.js +4 -4
- package/dist/cjs/b2b-anchor.cjs.entry.js +1 -1
- package/dist/cjs/b2b-button_2.cjs.entry.js +12 -8
- package/dist/cjs/b2b-card.cjs.entry.js +1 -1
- package/dist/cjs/b2b-checkbox-group.cjs.entry.js +7 -5
- package/dist/cjs/{b2b-table-cell_2.cjs.entry.js → b2b-checkbox_3.cjs.entry.js} +94 -7
- package/dist/cjs/b2b-core-components.cjs.js +3 -3
- package/dist/cjs/b2b-dropdown.cjs.entry.js +3 -3
- package/dist/cjs/b2b-grid-col.cjs.entry.js +1 -1
- package/dist/cjs/b2b-grid-row.cjs.entry.js +2 -2
- package/dist/cjs/b2b-grid.cjs.entry.js +1 -1
- package/dist/cjs/b2b-headline.cjs.entry.js +1 -1
- package/dist/cjs/b2b-icon.cjs.entry.js +4 -4
- package/dist/cjs/b2b-input-group_2.cjs.entry.js +10 -21
- package/dist/cjs/b2b-input-label.cjs.entry.js +1 -1
- package/dist/cjs/b2b-input_2.cjs.entry.js +8 -7
- package/dist/cjs/b2b-label.cjs.entry.js +1 -1
- package/dist/cjs/b2b-modal.cjs.entry.js +5 -5
- package/dist/cjs/b2b-pagination.cjs.entry.js +5 -5
- package/dist/cjs/b2b-paragraph.cjs.entry.js +5 -5
- package/dist/cjs/b2b-radio-button.cjs.entry.js +1 -1
- package/dist/cjs/b2b-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/b2b-required-separator.cjs.entry.js +3 -3
- package/dist/cjs/b2b-rounded-icon.cjs.entry.js +1 -1
- package/dist/cjs/b2b-scrollable-container.cjs.entry.js +1 -1
- package/dist/cjs/b2b-search.cjs.entry.js +1 -1
- package/dist/cjs/b2b-separator.cjs.entry.js +1 -1
- package/dist/cjs/b2b-tab-group.cjs.entry.js +1 -1
- package/dist/cjs/b2b-tab-panel.cjs.entry.js +1 -1
- package/dist/cjs/b2b-tab.cjs.entry.js +1 -1
- package/dist/cjs/b2b-table-row.cjs.entry.js +77 -21
- package/dist/cjs/b2b-table-rowgroup.cjs.entry.js +85 -24
- package/dist/cjs/b2b-table.cjs.entry.js +10 -10
- package/dist/cjs/b2b-textarea.cjs.entry.js +1 -1
- package/dist/cjs/b2b-toggle-button.cjs.entry.js +7 -7
- package/dist/cjs/b2b-toggle-group.cjs.entry.js +3 -3
- package/dist/cjs/b2b-tooltip.cjs.entry.js +4 -4
- package/dist/cjs/b2b-wizard-icon.cjs.entry.js +1 -1
- package/dist/cjs/b2b-wizard-step.cjs.entry.js +4 -4
- package/dist/cjs/b2b-wizard.cjs.entry.js +2 -2
- package/dist/cjs/{index-496aa5dd.js → index-04e07a00.js} +88 -31
- package/dist/cjs/loader.cjs.js +3 -3
- package/dist/cjs/{table.types-bb0926c7.js → table.types-00c8228a.js} +2 -2
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/alert/alert.css +7 -7
- package/dist/collection/components/alert/alert.e2e.js +67 -0
- package/dist/collection/components/alert/alert.js +2 -2
- package/dist/collection/components/anchor/anchor.css +2 -2
- package/dist/collection/components/anchor/anchor.spec.js +68 -0
- package/dist/collection/components/button/button.css +35 -39
- package/dist/collection/components/button/button.e2e.js +80 -0
- package/dist/collection/components/button/button.js +31 -6
- package/dist/collection/components/card/card.css +2 -2
- package/dist/collection/components/card/card.e2e.js +110 -0
- package/dist/collection/components/card/card.spec.js +32 -0
- package/dist/collection/components/checkbox/checkbox.css +34 -13
- package/dist/collection/components/checkbox/checkbox.e2e.js +30 -0
- package/dist/collection/components/checkbox/checkbox.js +81 -6
- package/dist/collection/components/checkbox/checkbox.spec.js +45 -0
- package/dist/collection/components/checkbox-group/checkbox-group.css +5 -5
- package/dist/collection/components/checkbox-group/checkbox-group.e2e.js +78 -0
- package/dist/collection/components/checkbox-group/checkbox-group.js +5 -3
- package/dist/collection/components/checkbox-group/checkbox-group.spec.js +38 -0
- package/dist/collection/components/dropdown/dropdown.css +7 -7
- package/dist/collection/components/dropdown/dropdown.e2e.js +48 -0
- package/dist/collection/components/dropdown/dropdown.js +1 -1
- package/dist/collection/components/dropdown/dropdown.spec.js +52 -0
- package/dist/collection/components/grid/grid.e2e.js +17 -0
- package/dist/collection/components/grid/row.js +1 -1
- package/dist/collection/components/headline/headline.css +2 -2
- package/dist/collection/components/headline/headline.e2e.js +13 -0
- package/dist/collection/components/headline/headline.spec.js +67 -0
- package/dist/collection/components/icon/icon.css +9 -9
- package/dist/collection/components/icon/icon.js +2 -2
- package/dist/collection/components/icon/icon.spec.js +21 -0
- package/dist/collection/components/input/input.css +14 -14
- package/dist/collection/components/input/input.e2e.js +43 -0
- package/dist/collection/components/input/input.js +26 -4
- package/dist/collection/components/input/input.spec.js +45 -0
- package/dist/collection/components/input-group/input-group.css +4 -4
- package/dist/collection/components/input-group/input-group.e2e.js +76 -0
- package/dist/collection/components/input-group/input-group.js +4 -21
- package/dist/collection/components/input-group/input-group.spec.js +56 -0
- package/dist/collection/components/input-label/input-label.e2e.js +10 -0
- package/dist/collection/components/input-list/input-list.css +7 -7
- package/dist/collection/components/input-list/input-list.e2e.js +227 -0
- package/dist/collection/components/input-list/input-list.js +24 -2
- package/dist/collection/components/label/label.css +2 -2
- package/dist/collection/components/label/label.e2e.js +17 -0
- package/dist/collection/components/label/label.spec.js +58 -0
- package/dist/collection/components/modal/modal.css +13 -18
- package/dist/collection/components/modal/modal.e2e.js +115 -0
- package/dist/collection/components/modal/modal.js +3 -3
- package/dist/collection/components/pagination/pagination.css +7 -7
- package/dist/collection/components/pagination/pagination.e2e.js +256 -0
- package/dist/collection/components/pagination/pagination.js +3 -3
- package/dist/collection/components/pagination/pagination.spec.js +104 -0
- package/dist/collection/components/paragraph/paragraph.css +9 -9
- package/dist/collection/components/paragraph/paragraph.e2e.js +13 -0
- package/dist/collection/components/paragraph/paragraph.js +3 -3
- package/dist/collection/components/radio/radio.css +2 -2
- package/dist/collection/components/radio/radio.e2e.js +36 -0
- package/dist/collection/components/radio/radio.spec.js +38 -0
- package/dist/collection/components/radio-group/radio-group.css +2 -2
- package/dist/collection/components/radio-group/radio-group.e2e.js +71 -0
- package/dist/collection/components/radio-group/radio-group.spec.js +31 -0
- package/dist/collection/components/required-separator/required-separator.css +4 -4
- package/dist/collection/components/required-separator/required-separator.e2e.js +17 -0
- package/dist/collection/components/required-separator/required-separator.js +1 -1
- package/dist/collection/components/rounded-icon/rounded-icon.css +2 -2
- package/dist/collection/components/scrollable-container/scrollable-container.css +2 -2
- package/dist/collection/components/search/search.e2e.js +97 -0
- package/dist/collection/components/separator/separator.css +2 -2
- package/dist/collection/components/separator/separator.e2e.js +22 -0
- package/dist/collection/components/spinner/spinner.css +2 -2
- package/dist/collection/components/spinner/spinner.e2e.js +12 -0
- package/dist/collection/components/spinner/spinner.spec.js +41 -0
- package/dist/collection/components/tab/tab.css +2 -2
- package/dist/collection/components/tab/tab.e2e.js +35 -0
- package/dist/collection/components/tab/tab.spec.js +31 -0
- package/dist/collection/components/tab-group/tab-group.e2e.js +98 -0
- package/dist/collection/components/tab-panel/tab-panel.css +2 -2
- package/dist/collection/components/tab-panel/tab-panel.e2e.js +12 -0
- package/dist/collection/components/tab-panel/tab-panel.spec.js +10 -0
- package/dist/collection/components/table/stories.data.js +6 -6
- package/dist/collection/components/table/table-cell/table-cell.css +2 -2
- package/dist/collection/components/table/table-header/table-header.css +17 -17
- package/dist/collection/components/table/table-header/table-header.js +4 -4
- package/dist/collection/components/table/table-row/table-row.css +3 -3
- package/dist/collection/components/table/table-row/table-row.js +185 -25
- package/dist/collection/components/table/table-rowgroup/table-rowgroup.css +3 -3
- package/dist/collection/components/table/table-rowgroup/table-rowgroup.js +118 -23
- package/dist/collection/components/table/table.css +2 -2
- package/dist/collection/components/table/table.e2e.js +370 -0
- package/dist/collection/components/table/table.js +8 -8
- package/dist/collection/components/table/table.stories.js +16 -7
- package/dist/collection/components/table/utils.js +18 -0
- package/dist/collection/components/textarea/textarea.css +2 -2
- package/dist/collection/components/textarea/textarea.e2e.js +91 -0
- package/dist/collection/components/toggle-button/toggle-button.css +9 -9
- package/dist/collection/components/toggle-button/toggle-button.e2e.js +44 -0
- package/dist/collection/components/toggle-button/toggle-button.js +5 -5
- package/dist/collection/components/toggle-group/toggle-group.css +3 -3
- package/dist/collection/components/toggle-group/toggle-group.e2e.js +65 -0
- package/dist/collection/components/toggle-group/toggle-group.js +1 -1
- package/dist/collection/components/tooltip/tooltip.css +14 -14
- package/dist/collection/components/tooltip/tooltip.e2e.js +64 -0
- package/dist/collection/components/tooltip/tooltip.js +2 -2
- package/dist/collection/components/wizard/wizard-step.js +2 -2
- package/dist/collection/components/wizard/wizard.css +3 -3
- package/dist/collection/components/wizard/wizard.e2e.js +149 -0
- package/dist/collection/components/wizard-icon/wizard-icon.css +2 -2
- package/dist/collection/docs/config/replace-prop-controls.spec.js +32 -0
- package/dist/collection/utils/types/table.types.js +5 -1
- package/dist/collection/utils/utils.spec.js +15 -0
- package/dist/components/b2b-alert.js +4 -4
- package/dist/components/b2b-anchor.js +1 -1
- package/dist/components/b2b-card.js +1 -1
- package/dist/components/b2b-checkbox-group.js +7 -5
- package/dist/components/b2b-checkbox.js +1 -99
- package/dist/components/b2b-dropdown.js +3 -3
- package/dist/components/b2b-grid-col.js +1 -1
- package/dist/components/b2b-grid-row.js +2 -2
- package/dist/components/b2b-grid.js +1 -1
- package/dist/components/b2b-label.js +1 -1
- package/dist/components/b2b-modal.js +5 -5
- package/dist/components/b2b-pagination.js +5 -5
- package/dist/components/b2b-paragraph.js +5 -5
- package/dist/components/b2b-radio-button.js +1 -1
- package/dist/components/b2b-radio-group.js +1 -1
- package/dist/components/b2b-required-separator.js +3 -3
- package/dist/components/b2b-scrollable-container.js +1 -1
- package/dist/components/b2b-search.js +1 -1
- package/dist/components/b2b-tab-group.js +1 -1
- package/dist/components/b2b-tab-panel.js +1 -1
- package/dist/components/b2b-tab.js +1 -1
- package/dist/components/b2b-table-row.js +97 -25
- package/dist/components/b2b-table-rowgroup.js +91 -27
- package/dist/components/b2b-table.js +9 -9
- package/dist/components/b2b-textarea.js +1 -1
- package/dist/components/b2b-toggle-button.js +7 -7
- package/dist/components/b2b-toggle-group.js +3 -3
- package/dist/components/b2b-tooltip.js +4 -4
- package/dist/components/b2b-wizard-step.js +4 -4
- package/dist/components/b2b-wizard.js +2 -2
- package/dist/components/button.js +13 -8
- package/dist/{esm/b2b-checkbox.entry.js → components/checkbox.js} +66 -13
- package/dist/components/headline.js +1 -1
- package/dist/components/icon.js +4 -4
- package/dist/components/input-group.js +7 -20
- package/dist/components/input-label.js +1 -1
- package/dist/components/input-list-option.js +2 -2
- package/dist/components/input-list.js +6 -4
- package/dist/components/input.js +8 -6
- package/dist/components/rounded-icon.js +1 -1
- package/dist/components/separator.js +1 -1
- package/dist/components/spinner.js +1 -1
- package/dist/components/table-cell.js +1 -1
- package/dist/components/table-header.js +6 -6
- package/dist/components/table.types.js +2 -2
- package/dist/components/wizard-icon.js +1 -1
- package/dist/custom-elements.json +22 -13
- package/dist/esm/b2b-alert.entry.js +4 -4
- package/dist/esm/b2b-anchor.entry.js +1 -1
- package/dist/esm/b2b-button_2.entry.js +12 -8
- package/dist/esm/b2b-card.entry.js +1 -1
- package/dist/esm/b2b-checkbox-group.entry.js +7 -5
- package/dist/esm/{b2b-table-cell_2.entry.js → b2b-checkbox_3.entry.js} +94 -8
- package/dist/esm/b2b-core-components.js +4 -4
- package/dist/esm/b2b-dropdown.entry.js +3 -3
- package/dist/esm/b2b-grid-col.entry.js +1 -1
- package/dist/esm/b2b-grid-row.entry.js +2 -2
- package/dist/esm/b2b-grid.entry.js +1 -1
- package/dist/esm/b2b-headline.entry.js +1 -1
- package/dist/esm/b2b-icon.entry.js +4 -4
- package/dist/esm/b2b-input-group_2.entry.js +10 -21
- package/dist/esm/b2b-input-label.entry.js +1 -1
- package/dist/esm/b2b-input_2.entry.js +8 -7
- package/dist/esm/b2b-label.entry.js +1 -1
- package/dist/esm/b2b-modal.entry.js +5 -5
- package/dist/esm/b2b-pagination.entry.js +5 -5
- package/dist/esm/b2b-paragraph.entry.js +5 -5
- package/dist/esm/b2b-radio-button.entry.js +1 -1
- package/dist/esm/b2b-radio-group.entry.js +1 -1
- package/dist/esm/b2b-required-separator.entry.js +3 -3
- package/dist/esm/b2b-rounded-icon.entry.js +1 -1
- package/dist/esm/b2b-scrollable-container.entry.js +1 -1
- package/dist/esm/b2b-search.entry.js +1 -1
- package/dist/esm/b2b-separator.entry.js +1 -1
- package/dist/esm/b2b-tab-group.entry.js +1 -1
- package/dist/esm/b2b-tab-panel.entry.js +1 -1
- package/dist/esm/b2b-tab.entry.js +1 -1
- package/dist/esm/b2b-table-row.entry.js +77 -21
- package/dist/esm/b2b-table-rowgroup.entry.js +85 -24
- package/dist/esm/b2b-table.entry.js +10 -10
- package/dist/esm/b2b-textarea.entry.js +1 -1
- package/dist/esm/b2b-toggle-button.entry.js +7 -7
- package/dist/esm/b2b-toggle-group.entry.js +3 -3
- package/dist/esm/b2b-tooltip.entry.js +4 -4
- package/dist/esm/b2b-wizard-icon.entry.js +1 -1
- package/dist/esm/b2b-wizard-step.entry.js +4 -4
- package/dist/esm/b2b-wizard.entry.js +2 -2
- package/dist/esm/{index-026605c2.js → index-dfdbf4b9.js} +88 -31
- package/dist/esm/loader.js +4 -4
- package/dist/esm/{table.types-9943c937.js → table.types-dd829d83.js} +2 -2
- package/dist/types/components/alert/alert.stories.d.ts +1 -1
- package/dist/types/components/anchor/anchor.stories.d.ts +1 -1
- package/dist/types/components/button/button.d.ts +2 -0
- package/dist/types/components/button/button.stories.d.ts +1 -1
- package/dist/types/components/card/card.stories.d.ts +1 -1
- package/dist/types/components/checkbox/checkbox.d.ts +8 -1
- package/dist/types/components/checkbox/checkbox.stories.d.ts +1 -1
- package/dist/types/components/checkbox-group/checkbox-group.stories.d.ts +1 -1
- package/dist/types/components/dropdown/dropdown.stories.d.ts +1 -1
- package/dist/types/components/grid/grid.stories.d.ts +1 -1
- package/dist/types/components/headline/headline.stories.d.ts +1 -1
- package/dist/types/components/icon/icon.stories.d.ts +1 -1
- package/dist/types/components/input/input.d.ts +2 -0
- package/dist/types/components/input/input.stories.d.ts +1 -1
- package/dist/types/components/input-group/input-group.d.ts +0 -4
- package/dist/types/components/input-group/input-group.stories.d.ts +1 -1
- package/dist/types/components/input-list/input-list.d.ts +2 -0
- package/dist/types/components/input-list/input-list.stories.d.ts +1 -1
- package/dist/types/components/label/label.stories.d.ts +1 -1
- package/dist/types/components/modal/modal.stories.d.ts +1 -1
- package/dist/types/components/pagination/pagination.stories.d.ts +1 -1
- package/dist/types/components/paragraph/paragraph.stories.d.ts +1 -1
- package/dist/types/components/radio/radio.stories.d.ts +1 -1
- package/dist/types/components/radio-group/radio-group.stories.d.ts +1 -1
- package/dist/types/components/required-separator/required-separator.stories.d.ts +1 -1
- package/dist/types/components/rounded-icon/rounded-icon.stories.d.ts +1 -1
- package/dist/types/components/scrollable-container/scrollable-container.stories.d.ts +1 -1
- package/dist/types/components/search/search.stories.d.ts +1 -1
- package/dist/types/components/separator/separator.stories.d.ts +1 -1
- package/dist/types/components/spinner/spinner.stories.d.ts +1 -1
- package/dist/types/components/tab-group/tab-group.stories.d.ts +1 -1
- package/dist/types/components/table/table-row/table-row.d.ts +23 -7
- package/dist/types/components/table/table-rowgroup/table-rowgroup.d.ts +12 -2
- package/dist/types/components/table/table.d.ts +1 -1
- package/dist/types/components/table/table.stories.d.ts +2 -1
- package/dist/types/components/table/utils.d.ts +4 -0
- package/dist/types/components/textarea/textarea.stories.d.ts +1 -1
- package/dist/types/components/toggle-group/toggle-group.stories.d.ts +1 -1
- package/dist/types/components/tooltip/tooltip.stories.d.ts +1 -1
- package/dist/types/components/wizard/wizard.stories.d.ts +1 -1
- package/dist/types/components/wizard-icon/wizard-icon.stories.d.ts +1 -1
- package/dist/types/components.d.ts +71 -9
- package/dist/types/docs/tokens/color.stories.d.ts +1 -1
- package/dist/types/docs/tokens/font.stories.d.ts +1 -1
- package/dist/types/docs/tokens/size.stories.d.ts +1 -1
- package/dist/types/stencil-public-runtime.d.ts +3 -0
- package/dist/types/utils/interfaces/content.interface.d.ts +4 -0
- package/dist/types/utils/interfaces/form.interface.d.ts +1 -0
- package/dist/types/utils/types/table.types.d.ts +7 -2
- package/dist/web-types.json +76 -6
- package/loader/index.d.ts +1 -1
- package/package.json +4 -4
- package/dist/b2b-core-components/p-0675225a.entry.js +0 -1
- package/dist/b2b-core-components/p-080a0741.entry.js +0 -1
- package/dist/b2b-core-components/p-0f8bd310.entry.js +0 -1
- package/dist/b2b-core-components/p-14f1b674.entry.js +0 -1
- package/dist/b2b-core-components/p-1eb784f9.entry.js +0 -1
- package/dist/b2b-core-components/p-21bfe96a.entry.js +0 -1
- package/dist/b2b-core-components/p-3cd9088a.entry.js +0 -1
- package/dist/b2b-core-components/p-42da7a57.entry.js +0 -1
- package/dist/b2b-core-components/p-4fc894c8.entry.js +0 -1
- package/dist/b2b-core-components/p-710600ca.entry.js +0 -1
- package/dist/b2b-core-components/p-83cb9d03.entry.js +0 -1
- package/dist/b2b-core-components/p-a7417890.js +0 -2
- package/dist/b2b-core-components/p-c9dcb35a.entry.js +0 -1
- package/dist/b2b-core-components/p-cf010e88.entry.js +0 -1
- package/dist/b2b-core-components/p-e3cd216c.entry.js +0 -1
- package/dist/b2b-core-components/p-fa6cd2ac.entry.js +0 -1
- package/dist/b2b-core-components/p-fe96d81a.entry.js +0 -1
- package/dist/cjs/b2b-checkbox.cjs.entry.js +0 -74
- /package/dist/b2b-core-components/{p-de2c1003.js → p-34eb99cb.js} +0 -0
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
import { newE2EPage } from '@stencil/core/testing';
|
|
2
|
+
describe('B2B-Table', () => {
|
|
3
|
+
let page;
|
|
4
|
+
beforeEach(async () => {
|
|
5
|
+
page = await newE2EPage();
|
|
6
|
+
await page.setContent(`
|
|
7
|
+
<b2b-table size='equal'>
|
|
8
|
+
<b2b-table-rowgroup type='header'>
|
|
9
|
+
<b2b-table-row>
|
|
10
|
+
<b2b-table-header sort-direction="not-sorted">Title 1</b2b-table-header>
|
|
11
|
+
<b2b-table-header>Title 2</b2b-table-header>
|
|
12
|
+
<b2b-table-header sort-direction="descending" sort-id='title3'>Title 3</b2b-table-header>
|
|
13
|
+
</b2b-table-row>
|
|
14
|
+
</b2b-table-rowgroup>
|
|
15
|
+
<b2b-table-rowgroup type='body'>
|
|
16
|
+
<b2b-table-row>
|
|
17
|
+
<b2b-table-cell><p>data 1a</p></b2b-table-cell>
|
|
18
|
+
<b2b-table-cell>data 2a</b2b-table-cell>
|
|
19
|
+
<b2b-table-cell>data 3a</b2b-table-cell>
|
|
20
|
+
</b2b-table-row>
|
|
21
|
+
</b2b-table-rowgroup>
|
|
22
|
+
</b2b-table>
|
|
23
|
+
`);
|
|
24
|
+
});
|
|
25
|
+
const tableWithAccordion = `
|
|
26
|
+
<b2b-table size="expand">
|
|
27
|
+
<b2b-table-rowgroup type="header" accordion>
|
|
28
|
+
<b2b-table-row id="test-header">
|
|
29
|
+
<b2b-table-header>Title 1</b2b-table-header>
|
|
30
|
+
<b2b-table-header>Title 2</b2b-table-header>
|
|
31
|
+
</b2b-table-row>
|
|
32
|
+
</b2b-table-rowgroup>
|
|
33
|
+
<b2b-table-rowgroup type="body" accordion>
|
|
34
|
+
<b2b-table-row id="test-parent">
|
|
35
|
+
<b2b-table-cell><p>data 1a</p></b2b-table-cell>
|
|
36
|
+
<b2b-table-cell>data 2a</b2b-table-cell>
|
|
37
|
+
</b2b-table-row>
|
|
38
|
+
<b2b-table-row id="test-child">
|
|
39
|
+
<b2b-table-cell><p>data 1a</p></b2b-table-cell>
|
|
40
|
+
<b2b-table-cell>data 2a</b2b-table-cell>
|
|
41
|
+
</b2b-table-row>
|
|
42
|
+
</b2b-table-rowgroup>
|
|
43
|
+
</b2b-table>`;
|
|
44
|
+
const tableWithSelection = `
|
|
45
|
+
<b2b-table size="expand">
|
|
46
|
+
<b2b-table-rowgroup type="header" accordion selectable>
|
|
47
|
+
<b2b-table-row id="test-header">
|
|
48
|
+
<b2b-table-header>Title 1</b2b-table-header>
|
|
49
|
+
<b2b-table-header>Title 2</b2b-table-header>
|
|
50
|
+
</b2b-table-row>
|
|
51
|
+
</b2b-table-rowgroup>
|
|
52
|
+
<b2b-table-rowgroup type="body" accordion selectable opened>
|
|
53
|
+
<b2b-table-row id="test-parent" value="peaches">
|
|
54
|
+
<b2b-table-cell><p>data 1a</p></b2b-table-cell>
|
|
55
|
+
<b2b-table-cell>data 2a</b2b-table-cell>
|
|
56
|
+
</b2b-table-row>
|
|
57
|
+
<b2b-table-row id="test-child" value="cherries">
|
|
58
|
+
<b2b-table-cell><p>data 1a</p></b2b-table-cell>
|
|
59
|
+
<b2b-table-cell>data 2a</b2b-table-cell>
|
|
60
|
+
</b2b-table-row>
|
|
61
|
+
<b2b-table-row id="second-child" value="plums">
|
|
62
|
+
<b2b-table-cell><p>data 1a</p></b2b-table-cell>
|
|
63
|
+
<b2b-table-cell>data 2a</b2b-table-cell>
|
|
64
|
+
</b2b-table-row>
|
|
65
|
+
</b2b-table-rowgroup>
|
|
66
|
+
</b2b-table>`;
|
|
67
|
+
it('should render the table component', async () => {
|
|
68
|
+
const element = await page.find('b2b-table');
|
|
69
|
+
expect(element).not.toBeNull();
|
|
70
|
+
});
|
|
71
|
+
it('should set cell sizes according to table size', async () => {
|
|
72
|
+
const cells = await page.findAll('b2b-table-cell');
|
|
73
|
+
cells.map(cell => {
|
|
74
|
+
expect(cell.getAttribute('size')).toBe('equal');
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
it('should set headers to fixed only if table is scrollable', async () => {
|
|
78
|
+
const cells = await page.findAll('b2b-table-header');
|
|
79
|
+
cells.map(cell => {
|
|
80
|
+
expect(cell.getAttribute('fixed')).not.toBe('true');
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
it('should set headers to fixed if table is scrollable', async () => {
|
|
84
|
+
page = await newE2EPage();
|
|
85
|
+
await page.setContent(`
|
|
86
|
+
<b2b-scrollable-container>
|
|
87
|
+
<b2b-table size='equal'>
|
|
88
|
+
<b2b-table-rowgroup type='header'>
|
|
89
|
+
<b2b-table-row>
|
|
90
|
+
<b2b-table-header>Title 1</b2b-table-header>
|
|
91
|
+
<b2b-table-header>Title 2</b2b-table-header>
|
|
92
|
+
</b2b-table-row>
|
|
93
|
+
</b2b-table>
|
|
94
|
+
</b2b-scrollable-container>
|
|
95
|
+
`);
|
|
96
|
+
const cells = await page.findAll('b2b-table-header');
|
|
97
|
+
cells.map(cell => {
|
|
98
|
+
expect(cell.getAttribute('fixed')).toBe('true');
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
it('should set header rows not highlightable', async () => {
|
|
102
|
+
const headerRow = await page.find('b2b-table-rowgroup[type=header] b2b-table-row');
|
|
103
|
+
const isHeaderRowSelectable = await headerRow.getProperty('highlight');
|
|
104
|
+
expect(isHeaderRowSelectable).toBe(false);
|
|
105
|
+
const dataRow = await page.find('b2b-table-rowgroup[type=body] b2b-table-row');
|
|
106
|
+
const isDataRowSelectable = await dataRow.getProperty('highlight');
|
|
107
|
+
expect(isDataRowSelectable).toBe(true);
|
|
108
|
+
});
|
|
109
|
+
it('should show a descending sorting button when a column header is hovered or focused', async () => {
|
|
110
|
+
const headerCol = await page.find({ text: 'Title 1' });
|
|
111
|
+
const sortArrow = await page.find('b2b-table-header >>> svg');
|
|
112
|
+
const ariaState = await headerCol.getAttribute('aria-sort');
|
|
113
|
+
expect(await sortArrow.isVisible()).toBe(false);
|
|
114
|
+
expect(ariaState).toEqualText('other');
|
|
115
|
+
await headerCol.hover();
|
|
116
|
+
await page.waitForChanges();
|
|
117
|
+
expect(await sortArrow.isVisible()).toBe(true);
|
|
118
|
+
});
|
|
119
|
+
it('should emit the sort direction when a column header is clicked', async () => {
|
|
120
|
+
const headerCol = await page.find({ text: 'Title 1' });
|
|
121
|
+
const b2bChange = await page.spyOnEvent('b2b-change');
|
|
122
|
+
await headerCol.click();
|
|
123
|
+
const ariaState = await headerCol.getAttribute('aria-sort');
|
|
124
|
+
expect(ariaState).toEqualText('ascending');
|
|
125
|
+
expect(b2bChange).toHaveReceivedEvent();
|
|
126
|
+
});
|
|
127
|
+
it('should emit the sort direction when a column header is focused and enter is pressed', async () => {
|
|
128
|
+
const headerCol = await page.find({ text: 'Title 1' });
|
|
129
|
+
const b2bChange = await page.spyOnEvent('b2b-change');
|
|
130
|
+
let ariaState = await headerCol.getAttribute('aria-sort');
|
|
131
|
+
expect(ariaState).toEqualText('other');
|
|
132
|
+
await page.keyboard.press('Tab');
|
|
133
|
+
await page.keyboard.press('Enter');
|
|
134
|
+
await page.waitForChanges();
|
|
135
|
+
ariaState = await headerCol.getAttribute('aria-sort');
|
|
136
|
+
expect(ariaState).toEqualText('ascending');
|
|
137
|
+
expect(b2bChange).toHaveReceivedEvent();
|
|
138
|
+
});
|
|
139
|
+
it('should un-sort siblings when sorting any column', async () => {
|
|
140
|
+
const headerCol = await page.find({ text: 'Title 3' });
|
|
141
|
+
let ariaState = await headerCol.getAttribute('aria-sort');
|
|
142
|
+
expect(ariaState).toEqualText('descending');
|
|
143
|
+
await page.keyboard.press('Tab');
|
|
144
|
+
await page.keyboard.press('Enter');
|
|
145
|
+
await page.waitForChanges();
|
|
146
|
+
ariaState = await headerCol.getAttribute('aria-sort');
|
|
147
|
+
expect(ariaState).toEqualText('other');
|
|
148
|
+
});
|
|
149
|
+
it('should not change sorting of siblings if they do not implement sorting', async () => {
|
|
150
|
+
const headerCol = await page.find({ text: 'Title 2' });
|
|
151
|
+
let ariaState = await headerCol.getAttribute('aria-sort');
|
|
152
|
+
expect(ariaState).toEqualText('other');
|
|
153
|
+
await page.keyboard.press('Tab');
|
|
154
|
+
await page.keyboard.press('Enter');
|
|
155
|
+
await page.waitForChanges();
|
|
156
|
+
ariaState = await headerCol.getAttribute('aria-sort');
|
|
157
|
+
expect(ariaState).toEqualText('other');
|
|
158
|
+
const sortDirection = await headerCol.getAttribute('sort-direction');
|
|
159
|
+
expect(sortDirection).toBeNull();
|
|
160
|
+
});
|
|
161
|
+
it('Table should emit an event with the sorting column and direction', async () => {
|
|
162
|
+
const headerCol = await page.find({ text: 'Title 1' });
|
|
163
|
+
const b2bChange = await page.spyOnEvent('b2b-sort-change');
|
|
164
|
+
await headerCol.click();
|
|
165
|
+
expect(b2bChange).toHaveReceivedEvent();
|
|
166
|
+
expect(b2bChange).toHaveReceivedEventDetail({
|
|
167
|
+
sortedColumn: 'Title 1',
|
|
168
|
+
sortDirection: 'ascending',
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
it('Table sort-change event should emit header sort-id if provided', async () => {
|
|
172
|
+
const headerCol = await page.find({ text: 'Title 3' });
|
|
173
|
+
const b2bChange = await page.spyOnEvent('b2b-sort-change');
|
|
174
|
+
await headerCol.click();
|
|
175
|
+
expect(b2bChange).toHaveReceivedEvent();
|
|
176
|
+
expect(b2bChange).toHaveReceivedEventDetail({
|
|
177
|
+
sortedColumn: 'title3',
|
|
178
|
+
sortDirection: 'ascending',
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
it('should render the first row of a rowgroup as an accordion parent if accordion is true on a rowgroup and the rowgroup type is body', async () => {
|
|
182
|
+
page = await newE2EPage();
|
|
183
|
+
await page.setContent(tableWithAccordion);
|
|
184
|
+
const firstRow = await page.find('#test-parent');
|
|
185
|
+
const type = await firstRow.getProperty('accordionType');
|
|
186
|
+
expect(type).toEqualText('parent');
|
|
187
|
+
});
|
|
188
|
+
it('should render all rows as accordion children when they are in the same rowgroup of type body in which accordion is true', async () => {
|
|
189
|
+
page = await newE2EPage();
|
|
190
|
+
await page.setContent(tableWithAccordion);
|
|
191
|
+
const firstRow = await page.find('#test-child');
|
|
192
|
+
const type = await firstRow.getProperty('accordionType');
|
|
193
|
+
expect(type).toEqualText('child');
|
|
194
|
+
});
|
|
195
|
+
it('should add an extra column for controls if accordion is true on a rowgroup', async () => {
|
|
196
|
+
page = await newE2EPage();
|
|
197
|
+
await page.setContent(tableWithAccordion);
|
|
198
|
+
const header = await page.find('#test-header >>> b2b-table-header');
|
|
199
|
+
expect(header).toEqualText('');
|
|
200
|
+
const parent = await page.find('#test-parent >>> b2b-table-cell');
|
|
201
|
+
const parentControl = await parent.find('button');
|
|
202
|
+
expect(parentControl).toBeDefined;
|
|
203
|
+
});
|
|
204
|
+
it('should show children accordion rows if the arrow is clicked in a parent accordion row', async () => {
|
|
205
|
+
page = await newE2EPage();
|
|
206
|
+
await page.setContent(tableWithAccordion);
|
|
207
|
+
const parent = await page.find('#test-parent >>> b2b-table-cell');
|
|
208
|
+
const parentControl = await parent.find('button');
|
|
209
|
+
const child = await page.find('#test-child');
|
|
210
|
+
const styleBefore = await child.getComputedStyle();
|
|
211
|
+
expect(styleBefore['visibility']).toEqual('collapse');
|
|
212
|
+
await parentControl.click();
|
|
213
|
+
await page.waitForChanges();
|
|
214
|
+
const styleAfter = await child.getComputedStyle();
|
|
215
|
+
expect(styleAfter['visibility']).toEqual('visible');
|
|
216
|
+
});
|
|
217
|
+
it('should show children accordion rows if the arrow is focused and enter is pressed in a parent accordion row', async () => {
|
|
218
|
+
page = await newE2EPage();
|
|
219
|
+
await page.setContent(tableWithAccordion);
|
|
220
|
+
const child = await page.find('#test-child');
|
|
221
|
+
const styleBefore = await child.getComputedStyle();
|
|
222
|
+
expect(styleBefore['visibility']).toEqual('collapse');
|
|
223
|
+
await page.keyboard.press('Tab');
|
|
224
|
+
await page.keyboard.press('Enter');
|
|
225
|
+
await page.waitForChanges();
|
|
226
|
+
const styleAfter = await child.getComputedStyle();
|
|
227
|
+
expect(styleAfter['visibility']).toEqual('visible');
|
|
228
|
+
});
|
|
229
|
+
it('should hide children accordion rows if the arrow is pressed again', async () => {
|
|
230
|
+
page = await newE2EPage();
|
|
231
|
+
await page.setContent(tableWithAccordion);
|
|
232
|
+
const parent = await page.find('#test-parent >>> b2b-table-cell');
|
|
233
|
+
const parentControl = await parent.find('button');
|
|
234
|
+
const child = await page.find('#test-child');
|
|
235
|
+
const styleBefore = await child.getComputedStyle();
|
|
236
|
+
expect(styleBefore['visibility']).toEqual('collapse');
|
|
237
|
+
await parentControl.click();
|
|
238
|
+
await page.waitForChanges();
|
|
239
|
+
await parentControl.click();
|
|
240
|
+
await page.waitForChanges();
|
|
241
|
+
const styleAfter = await child.getComputedStyle();
|
|
242
|
+
expect(styleAfter['visibility']).toEqual('collapse');
|
|
243
|
+
});
|
|
244
|
+
it('should render accordion opened if prop set to true', async () => {
|
|
245
|
+
page = await newE2EPage();
|
|
246
|
+
await page.setContent(`<b2b-table size="expand">
|
|
247
|
+
<b2b-table-rowgroup type="header" accordion>
|
|
248
|
+
<b2b-table-row id="test-header">
|
|
249
|
+
<b2b-table-header>Title 1</b2b-table-header>
|
|
250
|
+
<b2b-table-header>Title 2</b2b-table-header>
|
|
251
|
+
</b2b-table-row>
|
|
252
|
+
</b2b-table-rowgroup>
|
|
253
|
+
<b2b-table-rowgroup type="body" accordion opened>
|
|
254
|
+
<b2b-table-row id="test-parent">
|
|
255
|
+
<b2b-table-cell><p>data 1a</p></b2b-table-cell>
|
|
256
|
+
<b2b-table-cell>data 2a</b2b-table-cell>
|
|
257
|
+
</b2b-table-row>
|
|
258
|
+
<b2b-table-row id="test-child">
|
|
259
|
+
<b2b-table-cell><p>data 1a</p></b2b-table-cell>
|
|
260
|
+
<b2b-table-cell>data 2a</b2b-table-cell>
|
|
261
|
+
</b2b-table-row>
|
|
262
|
+
</b2b-table-rowgroup>
|
|
263
|
+
</b2b-table>`);
|
|
264
|
+
const child = await page.find('#test-child');
|
|
265
|
+
const toggleIconClass = await page.evaluate(() => {
|
|
266
|
+
const parentRow = document.querySelector('#test-parent');
|
|
267
|
+
const toggleIcon = parentRow.shadowRoot.querySelector('b2b-table-cell button');
|
|
268
|
+
return toggleIcon.className;
|
|
269
|
+
});
|
|
270
|
+
expect(toggleIconClass).toContain('b2b-table-row__accordion-icon--open');
|
|
271
|
+
const childInitialStyle = await child.getComputedStyle();
|
|
272
|
+
expect(childInitialStyle['visibility']).toEqual('visible');
|
|
273
|
+
});
|
|
274
|
+
it('should render a checkbox column when selectable is set to true on a rowgroup', async () => {
|
|
275
|
+
page = await newE2EPage();
|
|
276
|
+
await page.setContent(tableWithSelection);
|
|
277
|
+
const headerCheckbox = await page.find('#test-header >>> b2b-checkbox');
|
|
278
|
+
expect(headerCheckbox).not.toBeNull();
|
|
279
|
+
const rowCheckbox = await page.find('#test-parent >>> b2b-checkbox');
|
|
280
|
+
expect(rowCheckbox).not.toBeNull();
|
|
281
|
+
});
|
|
282
|
+
it('should toggle all rows when the header row is clicked', async () => {
|
|
283
|
+
page = await newE2EPage();
|
|
284
|
+
await page.setContent(tableWithSelection);
|
|
285
|
+
const headerCheckbox = await page.find('#test-header >>> b2b-checkbox');
|
|
286
|
+
await headerCheckbox.click();
|
|
287
|
+
const firstRow = await page.find('#test-parent');
|
|
288
|
+
const secondRow = await page.find('#test-child');
|
|
289
|
+
const thirdRow = await page.find('#second-child');
|
|
290
|
+
expect(await firstRow.getProperty('checked')).toBe(true);
|
|
291
|
+
expect(await secondRow.getProperty('checked')).toBe(true);
|
|
292
|
+
expect(await thirdRow.getProperty('checked')).toBe(true);
|
|
293
|
+
await headerCheckbox.click();
|
|
294
|
+
expect(await firstRow.getProperty('checked')).toBe(false);
|
|
295
|
+
expect(await secondRow.getProperty('checked')).toBe(false);
|
|
296
|
+
expect(await thirdRow.getProperty('checked')).toBe(false);
|
|
297
|
+
});
|
|
298
|
+
it('should toggle all children rows of a parent accordion row if the parent is selected', async () => {
|
|
299
|
+
page = await newE2EPage();
|
|
300
|
+
await page.setContent(tableWithSelection);
|
|
301
|
+
const firstRow = await page.find('#test-parent >>> b2b-checkbox');
|
|
302
|
+
expect(firstRow).not.toBeNull();
|
|
303
|
+
await firstRow.click();
|
|
304
|
+
const secondRow = await page.find('#test-child');
|
|
305
|
+
expect(await secondRow.getProperty('checked')).toBe(true);
|
|
306
|
+
await firstRow.click();
|
|
307
|
+
expect(await secondRow.getProperty('checked')).toBe(false);
|
|
308
|
+
});
|
|
309
|
+
it('should display an indeterminate checkbox if some rows are checked', async () => {
|
|
310
|
+
page = await newE2EPage();
|
|
311
|
+
await page.setContent(tableWithSelection);
|
|
312
|
+
const checkbox = await page.find('#test-child >>> b2b-checkbox');
|
|
313
|
+
expect(checkbox).not.toBeNull();
|
|
314
|
+
await checkbox.click();
|
|
315
|
+
const secondRow = await page.find('#test-child');
|
|
316
|
+
expect(await secondRow.getProperty('checked')).toBe(true);
|
|
317
|
+
const header = await page.find('#test-header');
|
|
318
|
+
expect(await header.getProperty('indeterminate')).toBe(true);
|
|
319
|
+
});
|
|
320
|
+
it('should display an indeterminate checkbox in the parent row of an accordion if not all children are checked', async () => {
|
|
321
|
+
page = await newE2EPage();
|
|
322
|
+
await page.setContent(tableWithSelection);
|
|
323
|
+
const secondRow = await page.find('#test-child >>> b2b-checkbox');
|
|
324
|
+
await secondRow.click();
|
|
325
|
+
expect(await secondRow.getProperty('checked')).toBe(true);
|
|
326
|
+
const firstRow = await page.find('#test-parent >>> b2b-checkbox');
|
|
327
|
+
expect(await firstRow.getProperty('indeterminate')).toBe(true);
|
|
328
|
+
});
|
|
329
|
+
it('should emit the currently selected values when a row is selected or unselected', async () => {
|
|
330
|
+
page = await newE2EPage();
|
|
331
|
+
await page.setContent(tableWithSelection);
|
|
332
|
+
const selectSpy = await page.spyOnEvent('b2b-row-selected');
|
|
333
|
+
const secondRow = await page.find('#test-child >>> b2b-checkbox');
|
|
334
|
+
await secondRow.click();
|
|
335
|
+
await page.waitForChanges();
|
|
336
|
+
expect(selectSpy).toHaveReceivedEvent();
|
|
337
|
+
expect(selectSpy).toHaveReceivedEventDetail({
|
|
338
|
+
checked: true,
|
|
339
|
+
value: 'cherries',
|
|
340
|
+
});
|
|
341
|
+
await secondRow.click();
|
|
342
|
+
await page.waitForChanges();
|
|
343
|
+
expect(selectSpy).toHaveReceivedEvent();
|
|
344
|
+
expect(selectSpy).toHaveReceivedEventDetail({
|
|
345
|
+
checked: false,
|
|
346
|
+
value: 'cherries',
|
|
347
|
+
});
|
|
348
|
+
});
|
|
349
|
+
it('should emit the currently selected values in an accordion when a row of that accordion is selected or unselected', async () => {
|
|
350
|
+
page = await newE2EPage();
|
|
351
|
+
await page.setContent(tableWithSelection);
|
|
352
|
+
const selectSpy = await page.spyOnEvent('b2b-group-selected');
|
|
353
|
+
const secondRow = await page.find('#test-parent >>> b2b-checkbox');
|
|
354
|
+
await secondRow.click();
|
|
355
|
+
await page.waitForChanges();
|
|
356
|
+
expect(selectSpy).toHaveReceivedEvent();
|
|
357
|
+
expect(selectSpy).toHaveReceivedEventDetail({
|
|
358
|
+
group: 'peaches',
|
|
359
|
+
values: ['cherries', 'plums'],
|
|
360
|
+
});
|
|
361
|
+
const thirdRow = await page.find('#second-child >>> b2b-checkbox');
|
|
362
|
+
await thirdRow.click();
|
|
363
|
+
await page.waitForChanges();
|
|
364
|
+
expect(selectSpy).toHaveReceivedEvent();
|
|
365
|
+
expect(selectSpy).toHaveReceivedEventDetail({
|
|
366
|
+
group: 'peaches',
|
|
367
|
+
values: ['cherries'],
|
|
368
|
+
});
|
|
369
|
+
});
|
|
370
|
+
});
|
|
@@ -4,6 +4,14 @@ export class TableComponent {
|
|
|
4
4
|
constructor() {
|
|
5
5
|
this.size = TableSizes.EXPAND;
|
|
6
6
|
}
|
|
7
|
+
onColumnSelected(event) {
|
|
8
|
+
if (event.target.nodeName === 'B2B-TABLE-HEADER') {
|
|
9
|
+
this.b2bSortChange.emit({
|
|
10
|
+
sortedColumn: event.target.sortId || event.target.textContent.trim(),
|
|
11
|
+
sortDirection: event.detail,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
}
|
|
7
15
|
setCellSize() {
|
|
8
16
|
const allCells = this.host.querySelectorAll('b2b-table-cell');
|
|
9
17
|
[...allCells].map(cell => cell.setAttribute('size', this.size));
|
|
@@ -30,14 +38,6 @@ export class TableComponent {
|
|
|
30
38
|
console.log(this.host);
|
|
31
39
|
}
|
|
32
40
|
}
|
|
33
|
-
onColumnSelected(event) {
|
|
34
|
-
if (event.target.nodeName === 'B2B-TABLE-HEADER') {
|
|
35
|
-
this.b2bSortChange.emit({
|
|
36
|
-
sortedColumn: event.target.sortId || event.target.textContent.trim(),
|
|
37
|
-
sortDirection: event.detail,
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
41
|
render() {
|
|
42
42
|
return (h(Host, { class: {
|
|
43
43
|
['b2b-table--' + this.size]: true,
|
|
@@ -191,11 +191,11 @@ const TemplateSorting = ({ data, firstColumnWidth, size, textWrap, align, highli
|
|
|
191
191
|
export const story110Sorting = TemplateSorting.bind({});
|
|
192
192
|
story110Sorting.args = Object.assign(Object.assign({}, defaultArgs), { withDividers: true, size: 'expand', data: userSampleData });
|
|
193
193
|
story110Sorting.storyName = 'Table with Sorting';
|
|
194
|
-
const TemplateAccordion = ({ data, firstColumnWidth, size, textWrap, align, highlight, withDividers, color, }) => {
|
|
194
|
+
const TemplateAccordion = ({ data, firstColumnWidth, size, textWrap, align, highlight, withDividers, color, selectable, }) => {
|
|
195
195
|
return html `
|
|
196
196
|
<div>
|
|
197
197
|
<b2b-table size="${size}">
|
|
198
|
-
<b2b-table-rowgroup type="header" accordion>
|
|
198
|
+
<b2b-table-rowgroup type="header" accordion selectable="${selectable}">
|
|
199
199
|
<b2b-table-row>
|
|
200
200
|
${data.columns.map((columnName, index) => {
|
|
201
201
|
return html ` <b2b-table-header
|
|
@@ -206,11 +206,12 @@ const TemplateAccordion = ({ data, firstColumnWidth, size, textWrap, align, high
|
|
|
206
206
|
})}
|
|
207
207
|
</b2b-table-row>
|
|
208
208
|
</b2b-table-rowgroup>
|
|
209
|
-
<b2b-table-rowgroup type="body" accordion>
|
|
209
|
+
<b2b-table-rowgroup type="body" accordion selectable="${selectable}">
|
|
210
210
|
${data.rows.map((row, index) => {
|
|
211
211
|
return html `<b2b-table-row
|
|
212
212
|
highlight="${highlight}"
|
|
213
|
-
color=${index === 0 ? color : 'default'}
|
|
213
|
+
color=${index === 0 ? color : 'default'}
|
|
214
|
+
value="${row[0]}">
|
|
214
215
|
${row.map(data => html `<b2b-table-cell
|
|
215
216
|
?divider=${withDividers}
|
|
216
217
|
align="${align}"
|
|
@@ -220,11 +221,16 @@ const TemplateAccordion = ({ data, firstColumnWidth, size, textWrap, align, high
|
|
|
220
221
|
</b2b-table-row>`;
|
|
221
222
|
})}
|
|
222
223
|
</b2b-table-rowgroup>
|
|
223
|
-
<b2b-table-rowgroup
|
|
224
|
+
<b2b-table-rowgroup
|
|
225
|
+
type="body"
|
|
226
|
+
accordion
|
|
227
|
+
opened
|
|
228
|
+
selectable="${selectable}">
|
|
224
229
|
${data.rows.map((row, index) => {
|
|
225
230
|
return html `<b2b-table-row
|
|
226
231
|
highlight="${highlight}"
|
|
227
|
-
color=${index === 0 ? color : 'default'}
|
|
232
|
+
color=${index === 0 ? color : 'default'}
|
|
233
|
+
value="${row[0]}">
|
|
228
234
|
${row.map(data => html `<b2b-table-cell
|
|
229
235
|
?divider=${withDividers}
|
|
230
236
|
align="${align}"
|
|
@@ -239,8 +245,11 @@ const TemplateAccordion = ({ data, firstColumnWidth, size, textWrap, align, high
|
|
|
239
245
|
`;
|
|
240
246
|
};
|
|
241
247
|
export const story120Accordion = TemplateAccordion.bind({});
|
|
242
|
-
story120Accordion.args = Object.assign(Object.assign({}, defaultArgs), { data: sampleData });
|
|
248
|
+
story120Accordion.args = Object.assign(Object.assign({}, defaultArgs), { data: sampleData, selectable: false });
|
|
243
249
|
story120Accordion.storyName = 'Accordion Table';
|
|
250
|
+
export const story130Selectable = TemplateAccordion.bind({});
|
|
251
|
+
story130Selectable.args = Object.assign(Object.assign({}, defaultArgs), { data: sampleData, selectable: true });
|
|
252
|
+
story130Selectable.storyName = 'Selectable Table';
|
|
244
253
|
const tableArgs = getArgTypes('b2b-table');
|
|
245
254
|
const rowGroupArgs = getArgTypes('b2b-table-rowgroup');
|
|
246
255
|
const rowArgs = getArgTypes('b2b-table-row');
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export function updateCheckboxState(rows, header) {
|
|
2
|
+
let someSelected = rows.some(item => item.checked === true);
|
|
3
|
+
let everySelected = rows.every(item => item.checked === true);
|
|
4
|
+
header.checked = everySelected;
|
|
5
|
+
header.indeterminate = someSelected && !everySelected;
|
|
6
|
+
}
|
|
7
|
+
export function getAllRows(hostEl) {
|
|
8
|
+
return Array.from(hostEl.querySelectorAll('b2b-table-row'));
|
|
9
|
+
}
|
|
10
|
+
export function getRemainingRows(hostEl) {
|
|
11
|
+
return Array.from(hostEl.querySelectorAll('b2b-table-row')).slice(1);
|
|
12
|
+
}
|
|
13
|
+
export function getFirstRow(hostEl) {
|
|
14
|
+
const firstRow = hostEl.querySelector('b2b-table-row');
|
|
15
|
+
if (firstRow != null) {
|
|
16
|
+
return firstRow;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Do not edit directly
|
|
3
|
-
* Generated on
|
|
3
|
+
* Generated on Tue, 22 Aug 2023 12:55:37 GMT
|
|
4
4
|
*/
|
|
5
5
|
:root, :host {
|
|
6
6
|
--b2b-size-200: 5rem; /* 80px */
|
|
@@ -122,7 +122,7 @@
|
|
|
122
122
|
}
|
|
123
123
|
/**
|
|
124
124
|
* Do not edit directly
|
|
125
|
-
* Generated on
|
|
125
|
+
* Generated on Tue, 22 Aug 2023 12:55:37 GMT
|
|
126
126
|
*/
|
|
127
127
|
:root [data-theme="dark"] {
|
|
128
128
|
--b2b-size-200: 5rem; /* 80px */
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { newE2EPage } from '@stencil/core/testing';
|
|
2
|
+
describe('B2B-Textarea', () => {
|
|
3
|
+
let page;
|
|
4
|
+
beforeEach(async () => {
|
|
5
|
+
page = await newE2EPage();
|
|
6
|
+
await page.setContent(`<b2b-textarea label="Test"></b2b-textarea>`);
|
|
7
|
+
});
|
|
8
|
+
it('should render the textarea component', async () => {
|
|
9
|
+
const element = await page.find('b2b-textarea');
|
|
10
|
+
expect(element).not.toBeNull();
|
|
11
|
+
});
|
|
12
|
+
it('should render the label', async () => {
|
|
13
|
+
const label = await page.find({ text: 'Test' });
|
|
14
|
+
expect(label).not.toBeNull();
|
|
15
|
+
});
|
|
16
|
+
it('should emit when the user types', async () => {
|
|
17
|
+
const element = await page.find('b2b-textarea >>> textarea');
|
|
18
|
+
const inputSpy = await page.spyOnEvent('b2b-input');
|
|
19
|
+
await element.type('ABC');
|
|
20
|
+
page.waitForChanges();
|
|
21
|
+
expect(inputSpy).toHaveReceivedEvent();
|
|
22
|
+
});
|
|
23
|
+
it('should not allow typing when disabled', async () => {
|
|
24
|
+
const textarea = `<b2b-textarea label="Test" disabled></b2b-textarea>`;
|
|
25
|
+
page = await newE2EPage();
|
|
26
|
+
await page.setContent(textarea);
|
|
27
|
+
const element = await page.find('b2b-textarea >>> textarea');
|
|
28
|
+
const inputSpy = await page.spyOnEvent('b2b-input');
|
|
29
|
+
await element.type('ABC');
|
|
30
|
+
expect(inputSpy).not.toHaveReceivedEvent();
|
|
31
|
+
});
|
|
32
|
+
it('should autofocus', async () => {
|
|
33
|
+
const textarea = `<b2b-textarea label="Test" autofocus></b2b-textarea>`;
|
|
34
|
+
page = await newE2EPage();
|
|
35
|
+
await page.setContent(textarea);
|
|
36
|
+
const element = await page.find('b2b-textarea');
|
|
37
|
+
expect(element).toHaveAttribute('autofocus');
|
|
38
|
+
});
|
|
39
|
+
it('should display a hint text', async () => {
|
|
40
|
+
const textarea = `<b2b-textarea label="Test" hint="A test hint"></b2b-textarea>`;
|
|
41
|
+
page = await newE2EPage();
|
|
42
|
+
await page.setContent(textarea);
|
|
43
|
+
const hint = await page.find('b2b-textarea >>> span');
|
|
44
|
+
expect(hint).toEqualText('A test hint');
|
|
45
|
+
});
|
|
46
|
+
it('should display an error text when the textarea is invalid', async () => {
|
|
47
|
+
const textarea = `<b2b-textarea label="Test" error="A test error" invalid></b2b-textarea>`;
|
|
48
|
+
page = await newE2EPage();
|
|
49
|
+
await page.setContent(textarea);
|
|
50
|
+
const error = await page.find('b2b-textarea >>> span');
|
|
51
|
+
expect(error).toEqualText('A test error');
|
|
52
|
+
});
|
|
53
|
+
it('should not display a hint when an error message is present and the textarea is invalid', async () => {
|
|
54
|
+
const textarea = `<b2b-textarea label="Test" error="A test error" hint="A test hint" invalid></b2b-textarea>`;
|
|
55
|
+
page = await newE2EPage();
|
|
56
|
+
await page.setContent(textarea);
|
|
57
|
+
const error = await page.find('b2b-textarea >>> span');
|
|
58
|
+
expect(error).toEqualText('A test error');
|
|
59
|
+
});
|
|
60
|
+
it('should not display an error if the textarea is invalid and disabled', async () => {
|
|
61
|
+
const textarea = `<b2b-textarea label="Test" error="A test error" hint="A test hint" invalid disabled></b2b-textarea>`;
|
|
62
|
+
page = await newE2EPage();
|
|
63
|
+
await page.setContent(textarea);
|
|
64
|
+
const hint = await page.find('b2b-textarea >>> span');
|
|
65
|
+
expect(hint).toEqualText('A test hint');
|
|
66
|
+
});
|
|
67
|
+
it('should accept a maximum length', async () => {
|
|
68
|
+
const textarea = `<b2b-textarea label="Test" max-length="10"></b2b-textarea>`;
|
|
69
|
+
const input = 'An input with 27 characters';
|
|
70
|
+
page = await newE2EPage();
|
|
71
|
+
await page.setContent(textarea);
|
|
72
|
+
const element = await page.find('b2b-textarea >>> textarea');
|
|
73
|
+
await element.type(input);
|
|
74
|
+
const value = await element.getProperty('value');
|
|
75
|
+
expect(value).toEqual('An input w');
|
|
76
|
+
});
|
|
77
|
+
it('should support form building from the shadow DOM', async () => {
|
|
78
|
+
const form = `<form>
|
|
79
|
+
<b2b-textarea label="Test"></textarea>
|
|
80
|
+
<button type="submit">Submit</button>
|
|
81
|
+
</form>`;
|
|
82
|
+
page = await newE2EPage();
|
|
83
|
+
await page.setContent(form);
|
|
84
|
+
const handleFormData = jest.fn();
|
|
85
|
+
const formdataEventSpy = await page.spyOnEvent('formdata', handleFormData);
|
|
86
|
+
await page.evaluate(() => {
|
|
87
|
+
document.querySelector('button').click();
|
|
88
|
+
});
|
|
89
|
+
expect(formdataEventSpy).toHaveReceivedEvent();
|
|
90
|
+
});
|
|
91
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Do not edit directly
|
|
3
|
-
* Generated on
|
|
3
|
+
* Generated on Tue, 22 Aug 2023 12:55:37 GMT
|
|
4
4
|
*/
|
|
5
5
|
:root, :host {
|
|
6
6
|
--b2b-size-200: 5rem; /* 80px */
|
|
@@ -122,7 +122,7 @@
|
|
|
122
122
|
}
|
|
123
123
|
/**
|
|
124
124
|
* Do not edit directly
|
|
125
|
-
* Generated on
|
|
125
|
+
* Generated on Tue, 22 Aug 2023 12:55:37 GMT
|
|
126
126
|
*/
|
|
127
127
|
:root [data-theme="dark"] {
|
|
128
128
|
--b2b-size-200: 5rem; /* 80px */
|
|
@@ -222,7 +222,7 @@
|
|
|
222
222
|
position: relative;
|
|
223
223
|
margin: 0;
|
|
224
224
|
}
|
|
225
|
-
:host .b2b-toggle-
|
|
225
|
+
:host .b2b-toggle-button__input {
|
|
226
226
|
border: 0;
|
|
227
227
|
clip: rect(0, 0, 0, 0);
|
|
228
228
|
height: 1px;
|
|
@@ -230,7 +230,7 @@
|
|
|
230
230
|
position: absolute !important;
|
|
231
231
|
width: 1px;
|
|
232
232
|
}
|
|
233
|
-
:host .b2b-toggle-
|
|
233
|
+
:host .b2b-toggle-button__label {
|
|
234
234
|
display: inline-block;
|
|
235
235
|
position: relative;
|
|
236
236
|
box-sizing: border-box;
|
|
@@ -246,23 +246,23 @@
|
|
|
246
246
|
text-decoration: none;
|
|
247
247
|
padding: 0 var(--b2b-size-20);
|
|
248
248
|
}
|
|
249
|
-
:host .b2b-toggle-
|
|
249
|
+
:host .b2b-toggle-button__label:hover {
|
|
250
250
|
background-color: var(--b2b-color-grey-200);
|
|
251
251
|
}
|
|
252
|
-
:host .b2b-toggle-
|
|
252
|
+
:host .b2b-toggle-button__input:focus + label {
|
|
253
253
|
outline: 2px solid -webkit-focus-ring-color;
|
|
254
254
|
z-index: 1;
|
|
255
255
|
transition: none;
|
|
256
256
|
}
|
|
257
|
-
:host .b2b-toggle-
|
|
257
|
+
:host .b2b-toggle-button__input--disabled:focus + label {
|
|
258
258
|
outline: none;
|
|
259
259
|
}
|
|
260
|
-
:host .b2b-toggle-
|
|
260
|
+
:host .b2b-toggle-button__label--checked, :host .b2b-toggle-button__label--checked:hover {
|
|
261
261
|
color: var(--b2b-color-white-100);
|
|
262
262
|
background-color: var(--b2b-color-black-50);
|
|
263
263
|
border-color: var(--b2b-color-black-50);
|
|
264
264
|
}
|
|
265
|
-
:host .b2b-toggle-
|
|
265
|
+
:host .b2b-toggle-button__label--disabled, :host .b2b-toggle-button__label--disabled:hover {
|
|
266
266
|
pointer-events: none;
|
|
267
267
|
color: var(--b2b-color-grey-250);
|
|
268
268
|
border-color: var(--b2b-color-grey-100);
|