@otto-de/b2b-core-components 1.5.0 → 1.6.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.
- 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-06aa96a8.entry.js +1 -0
- 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-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
|
@@ -28,18 +28,35 @@ export class CheckboxComponent {
|
|
|
28
28
|
if (this.disabled) {
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
|
-
|
|
31
|
+
else if (this.indeterminate) {
|
|
32
|
+
this.indeterminate = false;
|
|
33
|
+
this.checked = true;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
this.checked = !this.checked;
|
|
37
|
+
}
|
|
32
38
|
this.emitDetail();
|
|
33
39
|
};
|
|
40
|
+
this.renderIcon = () => {
|
|
41
|
+
if (this.indeterminate) {
|
|
42
|
+
return (h("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 11 1", class: "b2b-checkbox__icon" }, h("path", { d: "M8.5 0H0.5C0.223633 0 0 0.223633 0 0.5C0 0.776367 0.223633 1 0.5 1H8.5C8.77637 1 9 0.776367 9 0.5C9 0.223633 8.77637 0 8.5 0Z", fill: "white" })));
|
|
43
|
+
}
|
|
44
|
+
if (this.checked) {
|
|
45
|
+
return (h("svg", { class: "b2b-checkbox__icon", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 32 32" }, h("path", { d: "M11.798 25.082c-.341 0-.681-.13-.942-.389l-7.132-7.115a1.334 1.334 0 0 1 1.884-1.888l6.19 6.175L26.391 7.307a1.334 1.334 0 0 1 1.884 1.888L12.74 24.693c-.26.259-.601.389-.942.389z" })));
|
|
46
|
+
}
|
|
47
|
+
};
|
|
34
48
|
this.label = undefined;
|
|
35
49
|
this.required = false;
|
|
36
50
|
this.checked = false;
|
|
37
51
|
this.disabled = false;
|
|
52
|
+
this.indeterminate = undefined;
|
|
38
53
|
this.error = undefined;
|
|
39
54
|
this.hint = undefined;
|
|
40
55
|
this.name = undefined;
|
|
41
56
|
this.value = undefined;
|
|
42
57
|
this.invalid = false;
|
|
58
|
+
this.standalone = false;
|
|
59
|
+
this.groupDisabled = false;
|
|
43
60
|
}
|
|
44
61
|
connectedCallback() {
|
|
45
62
|
const form = this.hostElement.closest('form');
|
|
@@ -51,9 +68,11 @@ export class CheckboxComponent {
|
|
|
51
68
|
return (h(Host, { onClick: this.onClick }, h("div", { class: {
|
|
52
69
|
'b2b-checkbox': true,
|
|
53
70
|
'b2b-checkbox--error': this.invalid && !this.disabled,
|
|
54
|
-
'b2b-checkbox--disabled': this.disabled,
|
|
55
|
-
'b2b-checkbox
|
|
56
|
-
|
|
71
|
+
'b2b-checkbox--disabled': this.disabled || this.groupDisabled,
|
|
72
|
+
'b2b-checkbox--checked': this.checked,
|
|
73
|
+
'b2b-checkbox--standalone': this.standalone,
|
|
74
|
+
'b2b-checkbox--indeterminate': this.indeterminate,
|
|
75
|
+
} }, h("div", { class: "b2b-checkbox-items" }, this.renderIcon(), h("input", { class: "b2b-checkbox__input", "aria-labelledby": this.name, type: "checkbox", name: this.name, id: this.name, value: this.value, checked: this.checked, disabled: this.disabled || this.groupDisabled, onFocus: this.onFocus, onBlur: this.onBlur }), !this.standalone && (h("b2b-input-label", { id: this.name, required: this.required, disabled: this.disabled }, this.label))), (this.hint !== undefined && !this.invalid) ||
|
|
57
76
|
(this.hint !== undefined && this.disabled) ? (h("span", null, this.hint)) : (''), this.error !== undefined && this.invalid && !this.disabled ? (h("span", null, this.error)) : (''))));
|
|
58
77
|
}
|
|
59
78
|
static get is() { return "b2b-checkbox"; }
|
|
@@ -78,8 +97,8 @@ export class CheckboxComponent {
|
|
|
78
97
|
"resolved": "string",
|
|
79
98
|
"references": {}
|
|
80
99
|
},
|
|
81
|
-
"required":
|
|
82
|
-
"optional":
|
|
100
|
+
"required": false,
|
|
101
|
+
"optional": true,
|
|
83
102
|
"docs": {
|
|
84
103
|
"tags": [],
|
|
85
104
|
"text": "The checkbox label. This attribute is required."
|
|
@@ -141,6 +160,23 @@ export class CheckboxComponent {
|
|
|
141
160
|
"reflect": true,
|
|
142
161
|
"defaultValue": "false"
|
|
143
162
|
},
|
|
163
|
+
"indeterminate": {
|
|
164
|
+
"type": "boolean",
|
|
165
|
+
"mutable": true,
|
|
166
|
+
"complexType": {
|
|
167
|
+
"original": "boolean",
|
|
168
|
+
"resolved": "boolean",
|
|
169
|
+
"references": {}
|
|
170
|
+
},
|
|
171
|
+
"required": false,
|
|
172
|
+
"optional": false,
|
|
173
|
+
"docs": {
|
|
174
|
+
"tags": [],
|
|
175
|
+
"text": "If used in combination with other checkboxes, this state indicates that some checkboxes are checked, but not all. Per default, it is false."
|
|
176
|
+
},
|
|
177
|
+
"attribute": "indeterminate",
|
|
178
|
+
"reflect": false
|
|
179
|
+
},
|
|
144
180
|
"error": {
|
|
145
181
|
"type": "string",
|
|
146
182
|
"mutable": false,
|
|
@@ -226,6 +262,45 @@ export class CheckboxComponent {
|
|
|
226
262
|
"attribute": "invalid",
|
|
227
263
|
"reflect": false,
|
|
228
264
|
"defaultValue": "false"
|
|
265
|
+
},
|
|
266
|
+
"standalone": {
|
|
267
|
+
"type": "boolean",
|
|
268
|
+
"mutable": false,
|
|
269
|
+
"complexType": {
|
|
270
|
+
"original": "boolean",
|
|
271
|
+
"resolved": "boolean",
|
|
272
|
+
"references": {}
|
|
273
|
+
},
|
|
274
|
+
"required": false,
|
|
275
|
+
"optional": false,
|
|
276
|
+
"docs": {
|
|
277
|
+
"tags": [],
|
|
278
|
+
"text": "If true, renders a standalone inline checkbox with no label and hint/error."
|
|
279
|
+
},
|
|
280
|
+
"attribute": "standalone",
|
|
281
|
+
"reflect": false,
|
|
282
|
+
"defaultValue": "false"
|
|
283
|
+
},
|
|
284
|
+
"groupDisabled": {
|
|
285
|
+
"type": "boolean",
|
|
286
|
+
"mutable": false,
|
|
287
|
+
"complexType": {
|
|
288
|
+
"original": "boolean",
|
|
289
|
+
"resolved": "boolean",
|
|
290
|
+
"references": {}
|
|
291
|
+
},
|
|
292
|
+
"required": false,
|
|
293
|
+
"optional": false,
|
|
294
|
+
"docs": {
|
|
295
|
+
"tags": [{
|
|
296
|
+
"name": "internal",
|
|
297
|
+
"text": "whether the parent checkbox-group is disabled."
|
|
298
|
+
}],
|
|
299
|
+
"text": ""
|
|
300
|
+
},
|
|
301
|
+
"attribute": "group-disabled",
|
|
302
|
+
"reflect": false,
|
|
303
|
+
"defaultValue": "false"
|
|
229
304
|
}
|
|
230
305
|
};
|
|
231
306
|
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { newSpecPage } from '@stencil/core/testing';
|
|
2
|
+
import { h } from '@stencil/core';
|
|
3
|
+
import { CheckboxComponent } from './checkbox';
|
|
4
|
+
it('should render the checkbox', async () => {
|
|
5
|
+
const page = await newSpecPage({
|
|
6
|
+
components: [CheckboxComponent],
|
|
7
|
+
template: () => h("b2b-checkbox", { label: "test" }),
|
|
8
|
+
});
|
|
9
|
+
expect(page.root).toMatchSnapshot();
|
|
10
|
+
});
|
|
11
|
+
it('should disable the checkbox', async () => {
|
|
12
|
+
const page = await newSpecPage({
|
|
13
|
+
components: [CheckboxComponent],
|
|
14
|
+
template: () => h("b2b-checkbox", { label: "test", disabled: true }),
|
|
15
|
+
});
|
|
16
|
+
expect(page.root).toMatchSnapshot();
|
|
17
|
+
});
|
|
18
|
+
it('should render a hint message if a hint string is specified', async () => {
|
|
19
|
+
const page = await newSpecPage({
|
|
20
|
+
components: [CheckboxComponent],
|
|
21
|
+
template: () => (h("b2b-checkbox", { label: "test", hint: "this is a hint" })),
|
|
22
|
+
});
|
|
23
|
+
expect(page.root).toMatchSnapshot();
|
|
24
|
+
});
|
|
25
|
+
it('should apply an error style if it is marked as invalid.', async () => {
|
|
26
|
+
const page = await newSpecPage({
|
|
27
|
+
components: [CheckboxComponent],
|
|
28
|
+
template: () => (h("b2b-checkbox", { label: "test", error: "this is an error", invalid: true })),
|
|
29
|
+
});
|
|
30
|
+
expect(page.root).toMatchSnapshot();
|
|
31
|
+
});
|
|
32
|
+
it('should render an error message if an error is specified and it is marked as invalid', async () => {
|
|
33
|
+
const page = await newSpecPage({
|
|
34
|
+
components: [CheckboxComponent],
|
|
35
|
+
template: () => (h("b2b-checkbox", { label: "test", error: "this is an error", invalid: true })),
|
|
36
|
+
});
|
|
37
|
+
expect(page.root).toMatchSnapshot();
|
|
38
|
+
});
|
|
39
|
+
it('should render a hint if invalid and disabled are true at the same time', async () => {
|
|
40
|
+
const page = await newSpecPage({
|
|
41
|
+
components: [CheckboxComponent],
|
|
42
|
+
template: () => (h("b2b-checkbox", { label: "test", error: "This is a test error", hint: "this is a test hint", invalid: true, disabled: true })),
|
|
43
|
+
});
|
|
44
|
+
expect(page.root).toMatchSnapshot();
|
|
45
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Do not edit directly
|
|
3
|
-
* Generated on
|
|
3
|
+
* Generated on Tue, 22 Aug 2023 11:28:34 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 11:28:34 GMT
|
|
126
126
|
*/
|
|
127
127
|
:root [data-theme="dark"] {
|
|
128
128
|
--b2b-size-200: 5rem; /* 80px */
|
|
@@ -219,7 +219,7 @@
|
|
|
219
219
|
font-family: var(--b2b-font-family-default);
|
|
220
220
|
font-size: var(--b2b-size-copy-100);
|
|
221
221
|
}
|
|
222
|
-
.b2b-checkbox-
|
|
222
|
+
.b2b-checkbox-group__options {
|
|
223
223
|
display: flex;
|
|
224
224
|
flex-wrap: wrap;
|
|
225
225
|
align-items: stretch;
|
|
@@ -243,9 +243,9 @@
|
|
|
243
243
|
.b2b-checkbox-group--error span {
|
|
244
244
|
color: var(--b2b-color-error-100);
|
|
245
245
|
}
|
|
246
|
-
.b2b-checkbox-group--vertical .b2b-checkbox-
|
|
246
|
+
.b2b-checkbox-group--vertical .b2b-checkbox-group__options {
|
|
247
247
|
flex-direction: column;
|
|
248
248
|
}
|
|
249
|
-
.b2b-checkbox-group--horizontal .b2b-checkbox-
|
|
249
|
+
.b2b-checkbox-group--horizontal .b2b-checkbox-group__options {
|
|
250
250
|
flex-direction: row;
|
|
251
251
|
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { newE2EPage } from '@stencil/core/testing';
|
|
2
|
+
describe('B2B-Checkbox-Group', () => {
|
|
3
|
+
let page;
|
|
4
|
+
beforeEach(async () => {
|
|
5
|
+
page = await newE2EPage();
|
|
6
|
+
await page.setContent(`
|
|
7
|
+
<b2b-checkbox-group label="test label">
|
|
8
|
+
<b2b-checkbox label="one" value="one" error="test" hint="test"></b2b-checkbox>
|
|
9
|
+
<b2b-checkbox id="disabled-checkbox" label="two" value="two" error="test" hint="test" disabled></b2b-checkbox>
|
|
10
|
+
</b2b-checkbox-group>
|
|
11
|
+
`);
|
|
12
|
+
});
|
|
13
|
+
it('should render the checkbox group component', async () => {
|
|
14
|
+
const element = await page.find('b2b-checkbox-group');
|
|
15
|
+
expect(element).not.toBeNull();
|
|
16
|
+
});
|
|
17
|
+
it('should have all checkboxes unchecked by default and check a checkbox', async () => {
|
|
18
|
+
const element = await page.find('b2b-checkbox >>> .b2b-checkbox');
|
|
19
|
+
await element.click();
|
|
20
|
+
await page.waitForChanges();
|
|
21
|
+
expect(element).toHaveClass('b2b-checkbox--checked');
|
|
22
|
+
});
|
|
23
|
+
it('should receive a custom event', async () => {
|
|
24
|
+
const element = await page.find('b2b-checkbox');
|
|
25
|
+
const b2bChange = await page.spyOnEvent('b2b-change');
|
|
26
|
+
element.triggerEvent('b2b-change', {
|
|
27
|
+
detail: {
|
|
28
|
+
value: '',
|
|
29
|
+
checked: true,
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
await page.waitForChanges();
|
|
33
|
+
expect(b2bChange).toHaveReceivedEvent();
|
|
34
|
+
});
|
|
35
|
+
it('should emit a custom event when a checkbox is checked', async () => {
|
|
36
|
+
const element = await page.find('b2b-checkbox >>> .b2b-checkbox');
|
|
37
|
+
const b2bGroupChange = await page.spyOnEvent('b2b-group-change');
|
|
38
|
+
element.click();
|
|
39
|
+
await page.waitForChanges();
|
|
40
|
+
// currently a limitation of Puppeteer - no event details on custom events inside the shadow dom
|
|
41
|
+
expect(b2bGroupChange).toHaveReceivedEvent();
|
|
42
|
+
});
|
|
43
|
+
it('should disable all checkboxes when the property is specified', async () => {
|
|
44
|
+
const parentElement = await page.find('b2b-checkbox-group');
|
|
45
|
+
const element = await page.find('b2b-checkbox >>> .b2b-checkbox');
|
|
46
|
+
expect(element).not.toHaveClass('b2b-checkbox--disabled');
|
|
47
|
+
parentElement.setProperty('disabled', true);
|
|
48
|
+
await page.waitForChanges();
|
|
49
|
+
expect(element).toHaveClass('b2b-checkbox--disabled');
|
|
50
|
+
});
|
|
51
|
+
it('should set all checkboxes to invalid when the property is specified', async () => {
|
|
52
|
+
const parentElement = await page.find('b2b-checkbox-group');
|
|
53
|
+
const element = await page.find('b2b-checkbox >>> .b2b-checkbox');
|
|
54
|
+
expect(element).not.toHaveClass('b2b-checkbox--error');
|
|
55
|
+
parentElement.setProperty('invalid', true);
|
|
56
|
+
await page.waitForChanges();
|
|
57
|
+
expect(element).toHaveClass('b2b-checkbox--error');
|
|
58
|
+
});
|
|
59
|
+
it('should remove all children hint texts when the component is rendered', async () => {
|
|
60
|
+
const element = await page.find('b2b-checkbox');
|
|
61
|
+
const error = element.error;
|
|
62
|
+
const hint = element.hint;
|
|
63
|
+
expect(hint).not.toBeDefined;
|
|
64
|
+
expect(error).not.toBeDefined;
|
|
65
|
+
});
|
|
66
|
+
it('should disable individual elements of the group and keep their state when the group is dis- and enabled', async () => {
|
|
67
|
+
let checkbox = await page.find('#disabled-checkbox');
|
|
68
|
+
expect(await checkbox.getProperty('disabled')).toBe(true);
|
|
69
|
+
let group = await page.find('b2b-checkbox-group');
|
|
70
|
+
await group.setProperty('disabled', true);
|
|
71
|
+
await page.waitForChanges();
|
|
72
|
+
expect(await group.getProperty('disabled')).toBe(true);
|
|
73
|
+
await group.setProperty('disabled', false);
|
|
74
|
+
await page.waitForChanges();
|
|
75
|
+
expect(await group.getProperty('disabled')).toBe(false);
|
|
76
|
+
expect(await checkbox.getProperty('disabled')).toBe(true);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
@@ -13,7 +13,7 @@ export class CheckboxGroupComponent {
|
|
|
13
13
|
}
|
|
14
14
|
else {
|
|
15
15
|
nodes.forEach(node => {
|
|
16
|
-
node.
|
|
16
|
+
node.groupDisabled = this.disabled;
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
19
|
};
|
|
@@ -59,15 +59,17 @@ export class CheckboxGroupComponent {
|
|
|
59
59
|
}
|
|
60
60
|
componentDidLoad() {
|
|
61
61
|
this.toggleAllError();
|
|
62
|
-
this.toggleAllDisabled();
|
|
63
62
|
this.removeChildText();
|
|
63
|
+
if (this.disabled) {
|
|
64
|
+
this.toggleAllDisabled();
|
|
65
|
+
}
|
|
64
66
|
}
|
|
65
67
|
render() {
|
|
66
68
|
return (h(Host, null, h("div", { class: {
|
|
67
69
|
'b2b-checkbox-group': true,
|
|
68
70
|
'b2b-checkbox-group--error': this.invalid && !this.disabled,
|
|
69
71
|
[`b2b-checkbox-group--${this.alignment}`]: true,
|
|
70
|
-
} }, this.label && (h("b2b-input-label", { required: this.required }, this.label)), h("fieldset", null, h("div", { class: "b2b-checkbox-
|
|
72
|
+
} }, this.label && (h("b2b-input-label", { required: this.required }, this.label)), h("fieldset", null, h("div", { class: "b2b-checkbox-group__options" }, h("slot", null))), (this.hint !== undefined && !this.invalid) ||
|
|
71
73
|
(this.hint !== undefined && this.disabled) ? (h("span", null, this.hint)) : (''), this.error !== undefined && this.invalid && !this.disabled ? (h("span", null, this.error)) : (''))));
|
|
72
74
|
}
|
|
73
75
|
static get is() { return "b2b-checkbox-group"; }
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { newSpecPage } from '@stencil/core/testing';
|
|
2
|
+
import { h } from '@stencil/core';
|
|
3
|
+
import { CheckboxGroupComponent } from './checkbox-group';
|
|
4
|
+
it('should render the checkbox group and not show a hint or an error unless specified', async () => {
|
|
5
|
+
const page = await newSpecPage({
|
|
6
|
+
components: [CheckboxGroupComponent],
|
|
7
|
+
template: () => h("b2b-checkbox-group", { label: "test" }),
|
|
8
|
+
});
|
|
9
|
+
expect(page.root).toMatchSnapshot();
|
|
10
|
+
});
|
|
11
|
+
it('should render a group hint if a hint string is specified', async () => {
|
|
12
|
+
const page = await newSpecPage({
|
|
13
|
+
components: [CheckboxGroupComponent],
|
|
14
|
+
template: () => (h("b2b-checkbox-group", { label: "test", hint: "this is a test hint" })),
|
|
15
|
+
});
|
|
16
|
+
expect(page.root).toMatchSnapshot();
|
|
17
|
+
});
|
|
18
|
+
it('should not render a group hint if a hint string and an error are specified and the group is set to invalid', async () => {
|
|
19
|
+
const page = await newSpecPage({
|
|
20
|
+
components: [CheckboxGroupComponent],
|
|
21
|
+
template: () => (h("b2b-checkbox-group", { label: "test", hint: "this is a test hint", error: "this is a test error", invalid: true })),
|
|
22
|
+
});
|
|
23
|
+
expect(page.root).toMatchSnapshot();
|
|
24
|
+
});
|
|
25
|
+
it('should render a hint if invalid and disabled are true at the same time', async () => {
|
|
26
|
+
const page = await newSpecPage({
|
|
27
|
+
components: [CheckboxGroupComponent],
|
|
28
|
+
template: () => (h("b2b-checkbox-group", { label: "test", hint: "this is a test hint", error: "this is a test error", invalid: true, disabled: true })),
|
|
29
|
+
});
|
|
30
|
+
expect(page.root).toMatchSnapshot();
|
|
31
|
+
});
|
|
32
|
+
it('should align the checkboxes horizontally if set to horizontal', async () => {
|
|
33
|
+
const page = await newSpecPage({
|
|
34
|
+
components: [CheckboxGroupComponent],
|
|
35
|
+
template: () => (h("b2b-checkbox-group", { label: "test", alignment: "horizontal" })),
|
|
36
|
+
});
|
|
37
|
+
expect(page.root).toMatchSnapshot();
|
|
38
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Do not edit directly
|
|
3
|
-
* Generated on
|
|
3
|
+
* Generated on Tue, 22 Aug 2023 11:28:34 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 11:28:34 GMT
|
|
126
126
|
*/
|
|
127
127
|
:root [data-theme="dark"] {
|
|
128
128
|
--b2b-size-200: 5rem; /* 80px */
|
|
@@ -222,7 +222,7 @@
|
|
|
222
222
|
font-family: var(--b2b-font-family-default);
|
|
223
223
|
font-size: var(--b2b-size-copy-100);
|
|
224
224
|
}
|
|
225
|
-
:host(.b2b-dropdown) .b2b-
|
|
225
|
+
:host(.b2b-dropdown) .b2b-dropdown__select {
|
|
226
226
|
font-family: var(--b2b-font-family-default);
|
|
227
227
|
font-size: var(--b2b-size-copy-100);
|
|
228
228
|
appearance: none;
|
|
@@ -243,7 +243,7 @@
|
|
|
243
243
|
box-sizing: border-box;
|
|
244
244
|
position: relative;
|
|
245
245
|
}
|
|
246
|
-
:host(.b2b-dropdown) .b2b-
|
|
246
|
+
:host(.b2b-dropdown) .b2b-dropdown__select:focus-visible {
|
|
247
247
|
outline: 2px solid Highlight;
|
|
248
248
|
outline: 2px solid -webkit-focus-ring-color;
|
|
249
249
|
border-radius: var(--b2b-border-radius);
|
|
@@ -261,20 +261,20 @@
|
|
|
261
261
|
font-size: var(--b2b-size-copy-50);
|
|
262
262
|
line-height: var(--b2b-size-copy-line-height-75);
|
|
263
263
|
}
|
|
264
|
-
:host(.b2b-dropdown--error) .b2b-
|
|
264
|
+
:host(.b2b-dropdown--error) .b2b-dropdown__select {
|
|
265
265
|
background-color: var(--b2b-color-error-50);
|
|
266
266
|
border: 1px solid var(--b2b-color-error-100);
|
|
267
267
|
border-right: var(--b2b-border-right);
|
|
268
268
|
border-color: var(--b2b-color-error-100);
|
|
269
269
|
}
|
|
270
|
-
:host(.b2b-dropdown--error) .b2b-
|
|
270
|
+
:host(.b2b-dropdown--error) .b2b-dropdown__select:focus {
|
|
271
271
|
outline: 2px solid var(--b2b-color-error-100);
|
|
272
272
|
outline-offset: -1px;
|
|
273
273
|
}
|
|
274
274
|
:host(.b2b-dropdown--error) span {
|
|
275
275
|
color: var(--b2b-color-error-100);
|
|
276
276
|
}
|
|
277
|
-
:host(.b2b-dropdown--disabled) .b2b-
|
|
277
|
+
:host(.b2b-dropdown--disabled) .b2b-dropdown__select {
|
|
278
278
|
background-image: url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" fill="grey" viewBox="0 0 32 32"><path d="M27.748 12.017l-11.333 9.01a.666.666 0 0 1-.829 0l-11.333-9a.665.665 0 1 1 .829-1.044l10.919 8.671 10.919-8.68a.663.663 0 0 1 .936.107.667.667 0 0 1-.107.937z"/></svg>');
|
|
279
279
|
background-color: var(--b2b-color-grey-25);
|
|
280
280
|
color: var(--b2b-color-grey-250);
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { newE2EPage } from '@stencil/core/testing';
|
|
2
|
+
describe('B2B-Dropdown', () => {
|
|
3
|
+
let page;
|
|
4
|
+
beforeEach(async () => {
|
|
5
|
+
page = await newE2EPage();
|
|
6
|
+
await page.setContent(`
|
|
7
|
+
<b2b-dropdown label="Test Dropdown">
|
|
8
|
+
<option value="option-1" selected id="option-1">Option 1</option>
|
|
9
|
+
<option value="option-2" id="option-2">Option 2</option>
|
|
10
|
+
</b2b-dropdown>
|
|
11
|
+
`);
|
|
12
|
+
});
|
|
13
|
+
it('should render the dropdown component', async () => {
|
|
14
|
+
const element = await page.find('b2b-dropdown');
|
|
15
|
+
expect(element).not.toBeNull();
|
|
16
|
+
});
|
|
17
|
+
it('should receive a custom event when an option is selected', async () => {
|
|
18
|
+
const element = await page.find('b2b-dropdown');
|
|
19
|
+
const b2bChange = await page.spyOnEvent('b2b-change');
|
|
20
|
+
element.triggerEvent('b2b-change');
|
|
21
|
+
await page.waitForChanges();
|
|
22
|
+
expect(b2bChange).toHaveReceivedEvent();
|
|
23
|
+
});
|
|
24
|
+
// TODO: reimplement this test with new testing framework
|
|
25
|
+
// it('should emit the selected value when an option is clicked', async () => {
|
|
26
|
+
// const b2bChange = await page.spyOnEvent('b2b-change');
|
|
27
|
+
//
|
|
28
|
+
// page.select('b2b-dropdown', 'option-2');
|
|
29
|
+
//
|
|
30
|
+
// await page.waitForChanges();
|
|
31
|
+
//
|
|
32
|
+
// expect(b2bChange).toHaveReceivedEventDetail('option-2');
|
|
33
|
+
// });
|
|
34
|
+
it('should disable the select when the property is specified', async () => {
|
|
35
|
+
const element = await page.find('b2b-dropdown');
|
|
36
|
+
expect(element).not.toHaveClass('b2b-dropdown--disabled');
|
|
37
|
+
element.setProperty('disabled', true);
|
|
38
|
+
await page.waitForChanges();
|
|
39
|
+
expect(element).toHaveClass('b2b-dropdown--disabled');
|
|
40
|
+
});
|
|
41
|
+
it('should set the select to invalid when the property is specified', async () => {
|
|
42
|
+
const element = await page.find('b2b-dropdown');
|
|
43
|
+
expect(element).not.toHaveClass('b2b-dropdown--error');
|
|
44
|
+
element.setProperty('invalid', true);
|
|
45
|
+
await page.waitForChanges();
|
|
46
|
+
expect(element).toHaveClass('b2b-dropdown--error');
|
|
47
|
+
});
|
|
48
|
+
});
|
|
@@ -47,7 +47,7 @@ export class DropdownComponent {
|
|
|
47
47
|
'b2b-dropdown': true,
|
|
48
48
|
'b2b-dropdown--error': this.invalid && !this.disabled,
|
|
49
49
|
'b2b-dropdown--disabled': this.disabled,
|
|
50
|
-
} }, this.label && (h("b2b-input-label", { id: this.name, required: this.required }, this.label)), h("select", { class: "b2b-
|
|
50
|
+
} }, this.label && (h("b2b-input-label", { id: this.name, required: this.required }, this.label)), h("select", { class: "b2b-dropdown__select", "aria-labelledby": this.name, name: this.name, disabled: this.disabled, onChange: this.onSelect, onFocus: this.onFocus, onBlur: this.onBlur }), (this.hint !== undefined && !this.invalid) ||
|
|
51
51
|
(this.hint !== undefined && this.disabled) ? (h("span", null, this.hint)) : (''), this.error !== undefined && this.invalid && !this.disabled ? (h("span", null, this.error)) : ('')));
|
|
52
52
|
}
|
|
53
53
|
static get is() { return "b2b-dropdown"; }
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { newSpecPage } from '@stencil/core/testing';
|
|
2
|
+
import { h } from '@stencil/core';
|
|
3
|
+
import { DropdownComponent } from './dropdown';
|
|
4
|
+
it('should render the dropdown', async () => {
|
|
5
|
+
const page = await newSpecPage({
|
|
6
|
+
components: [DropdownComponent],
|
|
7
|
+
template: () => h("b2b-dropdown", { label: "test" }),
|
|
8
|
+
});
|
|
9
|
+
expect(page.root).toMatchSnapshot();
|
|
10
|
+
});
|
|
11
|
+
it('should render the dropdown with options', async () => {
|
|
12
|
+
const page = await newSpecPage({
|
|
13
|
+
components: [DropdownComponent],
|
|
14
|
+
template: () => (h("b2b-dropdown", { label: "test" }, h("option", null, "An option"))),
|
|
15
|
+
});
|
|
16
|
+
expect(page.root).toMatchSnapshot();
|
|
17
|
+
});
|
|
18
|
+
it('should render a hint if a hint string is specified', async () => {
|
|
19
|
+
const page = await newSpecPage({
|
|
20
|
+
components: [DropdownComponent],
|
|
21
|
+
template: () => (h("b2b-dropdown", { label: "test", hint: "This is a test hint" })),
|
|
22
|
+
});
|
|
23
|
+
expect(page.root).toMatchSnapshot();
|
|
24
|
+
});
|
|
25
|
+
it('should disable the dropdown', async () => {
|
|
26
|
+
const page = await newSpecPage({
|
|
27
|
+
components: [DropdownComponent],
|
|
28
|
+
template: () => h("b2b-dropdown", { label: "test", disabled: true }),
|
|
29
|
+
});
|
|
30
|
+
expect(page.root).toMatchSnapshot();
|
|
31
|
+
});
|
|
32
|
+
it('should apply an error style to the host element if an error is specified and the select is set to invalid', async () => {
|
|
33
|
+
const page = await newSpecPage({
|
|
34
|
+
components: [DropdownComponent],
|
|
35
|
+
template: () => (h("b2b-dropdown", { label: "test", error: "This is a test error", invalid: true })),
|
|
36
|
+
});
|
|
37
|
+
expect(page.root).toMatchSnapshot();
|
|
38
|
+
});
|
|
39
|
+
it('should render an error message if an error is specified and the select is set to invalid', async () => {
|
|
40
|
+
const page = await newSpecPage({
|
|
41
|
+
components: [DropdownComponent],
|
|
42
|
+
template: () => (h("b2b-dropdown", { label: "test", error: "This is a test error", invalid: true })),
|
|
43
|
+
});
|
|
44
|
+
expect(page.root).toMatchSnapshot();
|
|
45
|
+
});
|
|
46
|
+
it('should render a hint if invalid and disabled are true at the same time', async () => {
|
|
47
|
+
const page = await newSpecPage({
|
|
48
|
+
components: [DropdownComponent],
|
|
49
|
+
template: () => (h("b2b-dropdown", { label: "test", error: "This is a test error", hint: "this is a test hint", invalid: true, disabled: true })),
|
|
50
|
+
});
|
|
51
|
+
expect(page.root).toMatchSnapshot();
|
|
52
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { newE2EPage } from '@stencil/core/testing';
|
|
2
|
+
describe('B2B Grid', () => {
|
|
3
|
+
it('should render the grid and children', async () => {
|
|
4
|
+
const page = await newE2EPage();
|
|
5
|
+
await page.setContent(`<b2b-grid>
|
|
6
|
+
<b2b-grid-row>
|
|
7
|
+
<b2b-grid-col></b2b-grid-col>
|
|
8
|
+
</b2b-grid-row>
|
|
9
|
+
</b2b-grid>`);
|
|
10
|
+
const grid = await page.find('b2b-grid');
|
|
11
|
+
expect(grid).not.toBeNull();
|
|
12
|
+
const row = await page.find('b2b-grid-row');
|
|
13
|
+
expect(row).not.toBeNull();
|
|
14
|
+
const col = await page.find('b2b-grid-col');
|
|
15
|
+
expect(col).not.toBeNull();
|
|
16
|
+
});
|
|
17
|
+
});
|
|
@@ -15,7 +15,7 @@ export class B2bGridRowComponent {
|
|
|
15
15
|
['display']: 'flex',
|
|
16
16
|
['flex-wrap']: 'wrap',
|
|
17
17
|
['box-sizing']: 'border-box',
|
|
18
|
-
}
|
|
18
|
+
} }, h("slot", null)));
|
|
19
19
|
}
|
|
20
20
|
static get is() { return "b2b-grid-row"; }
|
|
21
21
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Do not edit directly
|
|
3
|
-
* Generated on
|
|
3
|
+
* Generated on Tue, 22 Aug 2023 11:28:34 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 11:28:34 GMT
|
|
126
126
|
*/
|
|
127
127
|
:root [data-theme="dark"] {
|
|
128
128
|
--b2b-size-200: 5rem; /* 80px */
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { newE2EPage } from '@stencil/core/testing';
|
|
2
|
+
describe('B2B-Headline', () => {
|
|
3
|
+
let page;
|
|
4
|
+
beforeEach(async () => {
|
|
5
|
+
page = await newE2EPage();
|
|
6
|
+
await page.setContent(`<b2b-headline>Headline</b2b-headline>`);
|
|
7
|
+
});
|
|
8
|
+
it('should render headline component', async () => {
|
|
9
|
+
const element = await page.find('b2b-headline');
|
|
10
|
+
expect(element).not.toBeNull();
|
|
11
|
+
expect(element).toEqualText('Headline');
|
|
12
|
+
});
|
|
13
|
+
});
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { newSpecPage } from '@stencil/core/testing';
|
|
2
|
+
import { h } from '@stencil/core';
|
|
3
|
+
import { HeadlineComponent } from './headline';
|
|
4
|
+
it('should use h1 tag with headline 400 size', async () => {
|
|
5
|
+
const page = await newSpecPage({
|
|
6
|
+
components: [HeadlineComponent],
|
|
7
|
+
template: () => (h("b2b-headline", { size: "400" }, "This is a h1 Headline")),
|
|
8
|
+
});
|
|
9
|
+
expect(page.root).toEqualHtml(`
|
|
10
|
+
<b2b-headline>
|
|
11
|
+
<mock:shadow-root>
|
|
12
|
+
<h1 class="b2b-headline--400 b2b-headline--left">
|
|
13
|
+
<slot></slot>
|
|
14
|
+
</h1>
|
|
15
|
+
</mock:shadow-root>
|
|
16
|
+
This is a h1 Headline
|
|
17
|
+
</b2b-headline>
|
|
18
|
+
`);
|
|
19
|
+
});
|
|
20
|
+
it('should use h2 tag with headline 200 size', async () => {
|
|
21
|
+
const page = await newSpecPage({
|
|
22
|
+
components: [HeadlineComponent],
|
|
23
|
+
template: () => (h("b2b-headline", { size: "200" }, "This is a h2 Headline")),
|
|
24
|
+
});
|
|
25
|
+
expect(page.root).toEqualHtml(`
|
|
26
|
+
<b2b-headline>
|
|
27
|
+
<mock:shadow-root>
|
|
28
|
+
<h2 class="b2b-headline--200 b2b-headline--left">
|
|
29
|
+
<slot></slot>
|
|
30
|
+
</h2>
|
|
31
|
+
</mock:shadow-root>
|
|
32
|
+
This is a h2 Headline
|
|
33
|
+
</b2b-headline>
|
|
34
|
+
`);
|
|
35
|
+
});
|
|
36
|
+
it('should use h3 tag with headline 100 size', async () => {
|
|
37
|
+
const page = await newSpecPage({
|
|
38
|
+
components: [HeadlineComponent],
|
|
39
|
+
template: () => (h("b2b-headline", { size: "100" }, "This is a h3 Headline")),
|
|
40
|
+
});
|
|
41
|
+
expect(page.root).toEqualHtml(`
|
|
42
|
+
<b2b-headline>
|
|
43
|
+
<mock:shadow-root>
|
|
44
|
+
<h3 class="b2b-headline--100 b2b-headline--left">
|
|
45
|
+
<slot></slot>
|
|
46
|
+
</h3>
|
|
47
|
+
</mock:shadow-root>
|
|
48
|
+
This is a h3 Headline
|
|
49
|
+
</b2b-headline>
|
|
50
|
+
`);
|
|
51
|
+
});
|
|
52
|
+
it('should use h1 tag as default size', async () => {
|
|
53
|
+
const page = await newSpecPage({
|
|
54
|
+
components: [HeadlineComponent],
|
|
55
|
+
template: () => h("b2b-headline", null, "This is a h3 Headline"),
|
|
56
|
+
});
|
|
57
|
+
expect(page.root).toEqualHtml(`
|
|
58
|
+
<b2b-headline>
|
|
59
|
+
<mock:shadow-root>
|
|
60
|
+
<h1 class="b2b-headline--400 b2b-headline--left">
|
|
61
|
+
<slot></slot>
|
|
62
|
+
</h1>
|
|
63
|
+
</mock:shadow-root>
|
|
64
|
+
This is a h3 Headline
|
|
65
|
+
</b2b-headline>
|
|
66
|
+
`);
|
|
67
|
+
});
|