@statistikzh/leu 0.28.1 → 0.28.3
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/{Accordion-CwkI7sfx.js → Accordion-EwJ1WHFd.js} +1 -1
- package/dist/Accordion.js +2 -2
- package/dist/{Button-DcuvEVkC.d.ts → Button-BywuwtT2.d.ts} +0 -1
- package/dist/{Button-D1aYnunQ.js → Button-q4GeKj_3.js} +3 -4
- package/dist/Button.d.ts +1 -1
- package/dist/Button.js +4 -4
- package/dist/{ButtonGroup-CqThYjzX.js → ButtonGroup-BeU3Prei.js} +2 -2
- package/dist/ButtonGroup.js +5 -5
- package/dist/{ChartWrapper-BjVT4x-H.js → ChartWrapper-Bdb0_n2z.js} +2 -2
- package/dist/ChartWrapper.js +3 -3
- package/dist/{Checkbox-HxYqp2w4.js → Checkbox-BC0gAuaH.js} +2 -2
- package/dist/Checkbox.js +3 -3
- package/dist/{CheckboxGroup-DYws2rwt.js → CheckboxGroup-CiOgcwmo.js} +2 -2
- package/dist/CheckboxGroup.js +4 -4
- package/dist/{Chip-gKxD6IaZ.js → Chip-CYlPzmTG.js} +1 -1
- package/dist/Chip.js +2 -2
- package/dist/{ChipGroup-ZvBzX_wd.js → ChipGroup-3IMW_Mp7.js} +1 -1
- package/dist/ChipGroup.js +3 -3
- package/dist/ChipLink.js +2 -2
- package/dist/ChipRemovable.js +3 -3
- package/dist/ChipSelectable.js +2 -2
- package/dist/{Dialog-BYpzTprV.js → Dialog-DCl5qSXY.js} +3 -4
- package/dist/Dialog.js +3 -3
- package/dist/{Dropdown-C4CgE4E-.js → Dropdown-COmpmOev.js} +5 -5
- package/dist/Dropdown.d.ts +1 -1
- package/dist/Dropdown.js +8 -8
- package/dist/{FileInput-nsnSQCaU.js → FileInput-DXjoqKB4.js} +4 -4
- package/dist/FileInput.d.ts +1 -1
- package/dist/FileInput.js +6 -6
- package/dist/{Icon-D8HTPEFH.js → Icon-Bmk7lLWY.js} +1 -1
- package/dist/Icon.js +2 -2
- package/dist/{Input-OrILqlax.js → Input-B9FwAPKO.js} +2 -2
- package/dist/Input.js +3 -3
- package/dist/{LeuElement-C_lcHzQI.js → LeuElement-CQJQi8TB.js} +1 -1
- package/dist/{Menu-CFLCnI34.js → Menu-bWCAn0rT.js} +2 -2
- package/dist/Menu.js +4 -4
- package/dist/{MenuItem-ICjLCGim.js → MenuItem-CzCFZi8o.js} +2 -2
- package/dist/MenuItem.js +3 -3
- package/dist/{Message-Dw5D_0i1.js → Message-DMaM9ukF.js} +2 -2
- package/dist/Message.js +3 -3
- package/dist/{Pagination-D1tP5FrM.js → Pagination-870u3UgQ.js} +4 -4
- package/dist/{Pagination-9eZ8WMvR.d.ts → Pagination-B-mTHZiw.d.ts} +1 -1
- package/dist/Pagination.d.ts +1 -1
- package/dist/Pagination.js +6 -6
- package/dist/{Placeholder-CnGzCZ5-.js → Placeholder-DvvzGB1p.js} +1 -1
- package/dist/Placeholder.js +2 -2
- package/dist/{Popup-BiN_tZDN.js → Popup-BpG_7twr.js} +1 -1
- package/dist/Popup.js +2 -2
- package/dist/{ProgressBar-BfJo_KyU.js → ProgressBar-BkskTLWK.js} +1 -1
- package/dist/ProgressBar.js +2 -2
- package/dist/{Radio-CV7vuQUj.js → Radio-BS7UUhR3.js} +1 -1
- package/dist/Radio.js +2 -2
- package/dist/{RadioGroup-C3XWSScc.js → RadioGroup-Cpo9kAjB.js} +2 -2
- package/dist/RadioGroup.js +3 -3
- package/dist/{Range-C8RVrIM9.js → Range-Dh0p5UWA.js} +1 -1
- package/dist/Range.js +2 -2
- package/dist/{ScrollTop-B_TJ_k4m.js → ScrollTop-CtPidICZ.js} +3 -3
- package/dist/ScrollTop.d.ts +1 -1
- package/dist/ScrollTop.js +5 -5
- package/dist/{Select-CbPTrL3G.js → Select-W1KqDOgx.js} +7 -7
- package/dist/Select.d.ts +1 -1
- package/dist/Select.js +9 -9
- package/dist/{Spinner-ChKJQJTN.js → Spinner-CmAYIFws.js} +1 -1
- package/dist/Spinner.js +2 -2
- package/dist/{Tab-BJbzY1xd.js → Tab-7Cww5fSx.js} +1 -1
- package/dist/Tab.js +2 -2
- package/dist/{TabGroup-BIaCHrKR.js → TabGroup-tURfCrlw.js} +3 -3
- package/dist/TabGroup.js +4 -4
- package/dist/{TabPanel-CTyw410b.js → TabPanel-DIZcmcMV.js} +1 -1
- package/dist/TabPanel.js +2 -2
- package/dist/{Table-D3QmePJd.js → Table-BVYjYXP9.js} +3 -3
- package/dist/Table.d.ts +1 -1
- package/dist/Table.js +7 -7
- package/dist/{Tag-nUnWtHYy.js → Tag-x0KmEDEa.js} +1 -1
- package/dist/Tag.js +2 -2
- package/dist/{VisuallyHidden-DF2q9pTa.js → VisuallyHidden-CXRfGsaZ.js} +1 -1
- package/dist/VisuallyHidden.js +2 -2
- package/dist/custom-elements.json +6445 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +30 -30
- package/dist/leu-accordion.js +2 -2
- package/dist/leu-button-group.js +5 -5
- package/dist/leu-button.d.ts +1 -1
- package/dist/leu-button.js +4 -4
- package/dist/leu-chart-wrapper.js +3 -3
- package/dist/leu-checkbox-group.js +4 -4
- package/dist/leu-checkbox.js +3 -3
- package/dist/leu-chip-group.js +3 -3
- package/dist/leu-chip-link.js +2 -2
- package/dist/leu-chip-removable.js +3 -3
- package/dist/leu-chip-selectable.js +2 -2
- package/dist/leu-dialog.js +3 -3
- package/dist/leu-dropdown.js +8 -8
- package/dist/leu-file-input.js +6 -6
- package/dist/leu-icon.js +2 -2
- package/dist/leu-input.js +3 -3
- package/dist/leu-menu-item.js +3 -3
- package/dist/leu-menu.js +4 -4
- package/dist/leu-message.js +3 -3
- package/dist/leu-pagination.d.ts +1 -1
- package/dist/leu-pagination.js +6 -6
- package/dist/leu-placeholder.js +2 -2
- package/dist/leu-popup.js +2 -2
- package/dist/leu-progress-bar.js +2 -2
- package/dist/leu-radio-group.js +3 -3
- package/dist/leu-radio.js +2 -2
- package/dist/leu-range.js +2 -2
- package/dist/leu-scroll-top.js +5 -5
- package/dist/leu-select.js +9 -9
- package/dist/leu-spinner.js +2 -2
- package/dist/leu-tab-group.js +4 -4
- package/dist/leu-tab-panel.js +2 -2
- package/dist/leu-tab.js +2 -2
- package/dist/leu-table.js +7 -7
- package/dist/leu-tag.js +2 -2
- package/dist/leu-visually-hidden.js +2 -2
- package/dist/vscode.html-custom-data.json +11 -11
- package/dist/vue/index.d.ts +20 -20
- package/dist/web-types.json +28 -28
- package/package.json +4 -1
- package/.editorconfig +0 -29
- package/.github/workflows/ci.yml +0 -81
- package/.github/workflows/deploy-github-pages.yaml +0 -34
- package/.github/workflows/publish.yml +0 -28
- package/.github/workflows/release-please.yml +0 -19
- package/.husky/commit-msg +0 -1
- package/.husky/pre-commit +0 -1
- package/.nvmrc +0 -1
- package/.prettierignore +0 -2
- package/.release-please-manifest.json +0 -3
- package/.storybook/main.ts +0 -34
- package/.storybook/manager-head.html +0 -1
- package/.storybook/manager.ts +0 -6
- package/.storybook/preview.ts +0 -96
- package/.storybook/static/fonts/Inter-Black.woff2 +0 -0
- package/.storybook/static/fonts/Inter-Regular.woff2 +0 -0
- package/.storybook/static/fonts.css +0 -11
- package/.storybook/static/global.css +0 -5
- package/.storybook/static/logo.svg +0 -19
- package/.storybook/theme.ts +0 -8
- package/AGENTS.md +0 -162
- package/CHANGELOG.md +0 -601
- package/CODE_OF_CONDUCT.md +0 -128
- package/CONTRIBUTING.md +0 -42
- package/commitlint.config.cjs +0 -1
- package/custom-elements-manifest.config.js +0 -46
- package/eslint.config.mjs +0 -79
- package/postcss.config.cjs +0 -16
- package/release-please-config.json +0 -9
- package/scripts/generate-component/generate.js +0 -167
- package/scripts/generate-component/templates/[Name].ts +0 -31
- package/scripts/generate-component/templates/[name].css +0 -6
- package/scripts/generate-component/templates/[namespace]-[name].ts +0 -11
- package/scripts/generate-component/templates/stories/[name].stories.ts +0 -26
- package/scripts/generate-component/templates/test/[name].test.ts +0 -23
- package/scripts/postcss-leu-font-styles.cjs +0 -154
- package/src/components/accordion/Accordion.ts +0 -108
- package/src/components/accordion/accordion.css +0 -150
- package/src/components/accordion/leu-accordion.ts +0 -11
- package/src/components/accordion/stories/accordion.stories.ts +0 -62
- package/src/components/accordion/test/accordion.test.ts +0 -118
- package/src/components/button/Button.ts +0 -286
- package/src/components/button/button.css +0 -317
- package/src/components/button/leu-button.ts +0 -11
- package/src/components/button/stories/button.stories.ts +0 -366
- package/src/components/button/test/button.test.ts +0 -417
- package/src/components/button-group/ButtonGroup.ts +0 -97
- package/src/components/button-group/button-group.css +0 -5
- package/src/components/button-group/leu-button-group.ts +0 -11
- package/src/components/button-group/stories/button-group.stories.ts +0 -54
- package/src/components/button-group/test/button-group.test.ts +0 -105
- package/src/components/chart-wrapper/ChartWrapper.ts +0 -78
- package/src/components/chart-wrapper/chart-wrapper.css +0 -87
- package/src/components/chart-wrapper/leu-chart-wrapper.ts +0 -11
- package/src/components/chart-wrapper/stories/chart-wrapper.stories.ts +0 -58
- package/src/components/chart-wrapper/test/chart-wrapper.test.ts +0 -77
- package/src/components/checkbox/Checkbox.ts +0 -129
- package/src/components/checkbox/CheckboxGroup.ts +0 -57
- package/src/components/checkbox/checkbox-group.css +0 -29
- package/src/components/checkbox/checkbox.css +0 -81
- package/src/components/checkbox/leu-checkbox-group.ts +0 -11
- package/src/components/checkbox/leu-checkbox.ts +0 -11
- package/src/components/checkbox/stories/checkbox-group.stories.ts +0 -59
- package/src/components/checkbox/stories/checkbox.stories.ts +0 -72
- package/src/components/checkbox/test/checkbox-group.test.ts +0 -109
- package/src/components/checkbox/test/checkbox.test.ts +0 -247
- package/src/components/chip/Chip.ts +0 -19
- package/src/components/chip/ChipGroup.ts +0 -122
- package/src/components/chip/ChipLink.ts +0 -24
- package/src/components/chip/ChipRemovable.ts +0 -45
- package/src/components/chip/ChipSelectable.ts +0 -80
- package/src/components/chip/chip-group.css +0 -15
- package/src/components/chip/chip.css +0 -139
- package/src/components/chip/exports.ts +0 -4
- package/src/components/chip/leu-chip-group.ts +0 -11
- package/src/components/chip/leu-chip-link.ts +0 -11
- package/src/components/chip/leu-chip-removable.ts +0 -11
- package/src/components/chip/leu-chip-selectable.ts +0 -11
- package/src/components/chip/stories/chip-group.stories.ts +0 -159
- package/src/components/chip/stories/chip-link.stories.ts +0 -45
- package/src/components/chip/stories/chip-removable.stories.ts +0 -42
- package/src/components/chip/stories/chip-selectable.stories.ts +0 -54
- package/src/components/chip/test/chip-group.test.ts +0 -171
- package/src/components/chip/test/chip-link.test.ts +0 -54
- package/src/components/chip/test/chip-removable.test.ts +0 -105
- package/src/components/chip/test/chip-selectable.test.ts +0 -101
- package/src/components/chip/test/chip.test.ts +0 -22
- package/src/components/dialog/Dialog.ts +0 -86
- package/src/components/dialog/dialog.css +0 -157
- package/src/components/dialog/leu-dialog.ts +0 -11
- package/src/components/dialog/stories/dialog.stories.ts +0 -142
- package/src/components/dialog/test/dialog.test.ts +0 -85
- package/src/components/dropdown/Dropdown.ts +0 -152
- package/src/components/dropdown/dropdown.css +0 -16
- package/src/components/dropdown/leu-dropdown.ts +0 -11
- package/src/components/dropdown/stories/dropdown.stories.ts +0 -58
- package/src/components/dropdown/test/dropdown.test.ts +0 -59
- package/src/components/file-input/FileInput.ts +0 -324
- package/src/components/file-input/file-input.css +0 -118
- package/src/components/file-input/leu-file-input.ts +0 -11
- package/src/components/file-input/stories/file-input.stories.ts +0 -45
- package/src/components/file-input/test/file-input.test.ts +0 -62
- package/src/components/icon/Icon.ts +0 -47
- package/src/components/icon/icon.css +0 -10
- package/src/components/icon/leu-icon.ts +0 -11
- package/src/components/icon/paths.ts +0 -219
- package/src/components/icon/stories/icon.stories.ts +0 -79
- package/src/components/icon/test/icon.test.ts +0 -50
- package/src/components/input/Input.ts +0 -469
- package/src/components/input/input.css +0 -238
- package/src/components/input/leu-input.ts +0 -11
- package/src/components/input/stories/input.stories.ts +0 -204
- package/src/components/input/test/input.test.ts +0 -603
- package/src/components/menu/Menu.ts +0 -149
- package/src/components/menu/MenuItem.ts +0 -168
- package/src/components/menu/leu-menu-item.ts +0 -11
- package/src/components/menu/leu-menu.ts +0 -11
- package/src/components/menu/menu-item.css +0 -77
- package/src/components/menu/menu.css +0 -19
- package/src/components/menu/stories/menu-item.stories.ts +0 -81
- package/src/components/menu/stories/menu.stories.ts +0 -54
- package/src/components/menu/test/menu-item.test.ts +0 -210
- package/src/components/menu/test/menu.test.ts +0 -125
- package/src/components/message/Message.ts +0 -118
- package/src/components/message/leu-message.ts +0 -11
- package/src/components/message/message.css +0 -163
- package/src/components/message/stories/message.mdx +0 -76
- package/src/components/message/stories/message.stories.ts +0 -149
- package/src/components/message/test/message.test.ts +0 -96
- package/src/components/pagination/Pagination.ts +0 -192
- package/src/components/pagination/leu-pagination.ts +0 -11
- package/src/components/pagination/pagination.css +0 -54
- package/src/components/pagination/stories/pagination.stories.ts +0 -115
- package/src/components/pagination/test/pagination.test.ts +0 -210
- package/src/components/placeholder/Placeholder.ts +0 -33
- package/src/components/placeholder/leu-placeholder.ts +0 -11
- package/src/components/placeholder/placeholder.css +0 -59
- package/src/components/placeholder/stories/placeholder.stories.ts +0 -34
- package/src/components/placeholder/test/placeholder.test.ts +0 -31
- package/src/components/popup/Popup.ts +0 -264
- package/src/components/popup/leu-popup.ts +0 -11
- package/src/components/popup/popup.css +0 -24
- package/src/components/popup/stories/popup.stories.ts +0 -117
- package/src/components/popup/test/popup.test.ts +0 -90
- package/src/components/progress-bar/ProgressBar.ts +0 -52
- package/src/components/progress-bar/leu-progress-bar.ts +0 -11
- package/src/components/progress-bar/progress-bar.css +0 -97
- package/src/components/progress-bar/stories/progress-bar.stories.ts +0 -39
- package/src/components/progress-bar/test/progress-bar.test.ts +0 -61
- package/src/components/radio/Radio.ts +0 -59
- package/src/components/radio/RadioGroup.ts +0 -181
- package/src/components/radio/leu-radio-group.ts +0 -11
- package/src/components/radio/leu-radio.ts +0 -11
- package/src/components/radio/radio-group.css +0 -29
- package/src/components/radio/radio.css +0 -76
- package/src/components/radio/stories/radio-group.stories.ts +0 -54
- package/src/components/radio/stories/radio.stories.ts +0 -55
- package/src/components/radio/test/radio-group.test.ts +0 -83
- package/src/components/radio/test/radio.test.ts +0 -119
- package/src/components/range/Range.ts +0 -400
- package/src/components/range/leu-range.ts +0 -11
- package/src/components/range/range.css +0 -227
- package/src/components/range/stories/range.stories.ts +0 -185
- package/src/components/range/test/range.test.ts +0 -228
- package/src/components/scroll-top/ScrollTop.ts +0 -91
- package/src/components/scroll-top/leu-scroll-top.ts +0 -11
- package/src/components/scroll-top/scroll-top.css +0 -50
- package/src/components/scroll-top/stories/scroll-top.stories.ts +0 -217
- package/src/components/scroll-top/test/scroll-top.test.ts +0 -22
- package/src/components/select/Select.ts +0 -570
- package/src/components/select/leu-select.ts +0 -11
- package/src/components/select/select.css +0 -222
- package/src/components/select/stories/select.stories.ts +0 -173
- package/src/components/select/test/fixtures.ts +0 -162
- package/src/components/select/test/select.test.ts +0 -937
- package/src/components/spinner/Spinner.ts +0 -31
- package/src/components/spinner/leu-spinner.ts +0 -11
- package/src/components/spinner/spinner.css +0 -20
- package/src/components/spinner/stories/spinner.stories.ts +0 -29
- package/src/components/spinner/test/spinner.test.ts +0 -30
- package/src/components/tab/Tab.ts +0 -72
- package/src/components/tab/TabGroup.ts +0 -267
- package/src/components/tab/TabPanel.ts +0 -59
- package/src/components/tab/leu-tab-group.ts +0 -11
- package/src/components/tab/leu-tab-panel.ts +0 -11
- package/src/components/tab/leu-tab.ts +0 -11
- package/src/components/tab/stories/tab.stories.ts +0 -97
- package/src/components/tab/tab-group.css +0 -63
- package/src/components/tab/tab-panel.css +0 -10
- package/src/components/tab/tab.css +0 -54
- package/src/components/tab/test/tab-group.test.ts +0 -426
- package/src/components/tab/test/tab-panel.test.ts +0 -102
- package/src/components/tab/test/tab.test.ts +0 -139
- package/src/components/table/Table.ts +0 -253
- package/src/components/table/leu-table.ts +0 -11
- package/src/components/table/stories/table.stories.ts +0 -131
- package/src/components/table/table.css +0 -112
- package/src/components/table/test/table.test.ts +0 -37
- package/src/components/tag/Tag.ts +0 -28
- package/src/components/tag/leu-tag.ts +0 -11
- package/src/components/tag/stories/tag.stories.ts +0 -107
- package/src/components/tag/tag.css +0 -42
- package/src/components/tag/test/tag.test.ts +0 -28
- package/src/components/visually-hidden/VisuallyHidden.ts +0 -16
- package/src/components/visually-hidden/leu-visually-hidden.ts +0 -11
- package/src/components/visually-hidden/stories/visually-hidden.stories.ts +0 -22
- package/src/components/visually-hidden/test/visually-hidden.test.ts +0 -34
- package/src/components/visually-hidden/visually-hidden.css +0 -10
- package/src/docs/contributing.mdx +0 -154
- package/src/docs/installation.mdx +0 -35
- package/src/docs/theme.mdx +0 -400
- package/src/docs/usage.mdx +0 -73
- package/src/global.d.ts +0 -11
- package/src/index.ts +0 -29
- package/src/lib/LeuElement.ts +0 -43
- package/src/lib/a11y.ts +0 -26
- package/src/lib/hasSlotController.ts +0 -74
- package/src/lib/mixins/FormAssociatedMixin.ts +0 -115
- package/src/lib/styleMap.ts +0 -139
- package/src/lib/utils.ts +0 -45
- package/src/styles/common-styles.css +0 -14
- package/src/styles/custom-media.css +0 -6
- package/src/styles/font-definitions.json +0 -210
- package/src/styles/style.stories.ts +0 -64
- package/src/styles/theme.css +0 -90
- package/stat_zh.png +0 -0
- package/stylelint.config.mjs +0 -23
- package/tsconfig.build.json +0 -24
- package/tsconfig.json +0 -14
- package/tsdown.config.ts +0 -35
- package/web-test-runner.config.mjs +0 -102
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { html } from "lit"
|
|
2
|
-
import "../leu-checkbox.js"
|
|
3
|
-
|
|
4
|
-
export default {
|
|
5
|
-
title: "Components/Checkbox",
|
|
6
|
-
component: "leu-checkbox",
|
|
7
|
-
argTypes: {
|
|
8
|
-
label: {
|
|
9
|
-
control: "text",
|
|
10
|
-
},
|
|
11
|
-
defaultChecked: {
|
|
12
|
-
control: "boolean",
|
|
13
|
-
},
|
|
14
|
-
},
|
|
15
|
-
parameters: {
|
|
16
|
-
design: {
|
|
17
|
-
type: "figma",
|
|
18
|
-
url: "https://www.figma.com/file/d6Pv21UVUbnBs3AdcZijHmbN/KTZH-Design-System?type=design&node-id=17340-81935&mode=design&t=lzVrtq8lxYVJU5TB-11",
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
function Template({
|
|
24
|
-
label = "Label",
|
|
25
|
-
value,
|
|
26
|
-
checked,
|
|
27
|
-
defaultChecked,
|
|
28
|
-
disabled,
|
|
29
|
-
name = "",
|
|
30
|
-
required,
|
|
31
|
-
}) {
|
|
32
|
-
return html`
|
|
33
|
-
<leu-checkbox
|
|
34
|
-
value=${value}
|
|
35
|
-
.checked=${checked}
|
|
36
|
-
?checked=${defaultChecked}
|
|
37
|
-
?disabled=${disabled}
|
|
38
|
-
name=${name}
|
|
39
|
-
?required=${required}
|
|
40
|
-
>
|
|
41
|
-
${label}
|
|
42
|
-
</leu-checkbox>
|
|
43
|
-
`
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export const Regular = Template.bind({})
|
|
47
|
-
|
|
48
|
-
export const Checked = Template.bind({})
|
|
49
|
-
Checked.args = {
|
|
50
|
-
checked: true,
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export const DefaultChecked = Template.bind({})
|
|
54
|
-
DefaultChecked.args = {
|
|
55
|
-
defaultChecked: true,
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export const Disabled = Template.bind({})
|
|
59
|
-
Disabled.args = {
|
|
60
|
-
disabled: true,
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export const CheckedDisabled = Template.bind({})
|
|
64
|
-
CheckedDisabled.args = {
|
|
65
|
-
checked: true,
|
|
66
|
-
disabled: true,
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export const Required = Template.bind({})
|
|
70
|
-
Required.args = {
|
|
71
|
-
required: true,
|
|
72
|
-
}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { html } from "lit"
|
|
2
|
-
import { fixture, expect } from "@open-wc/testing"
|
|
3
|
-
import { sendKeys } from "@web/test-runner-commands"
|
|
4
|
-
|
|
5
|
-
import "../leu-checkbox.js"
|
|
6
|
-
import "../leu-checkbox-group.js"
|
|
7
|
-
|
|
8
|
-
async function defaultFixture() {
|
|
9
|
-
return fixture(html`
|
|
10
|
-
<leu-checkbox-group>
|
|
11
|
-
<leu-checkbox value="1" disabled>Option 1</leu-checkbox>
|
|
12
|
-
<leu-checkbox value="2">Option 2</leu-checkbox>
|
|
13
|
-
<leu-checkbox value="3">Option 3</leu-checkbox>
|
|
14
|
-
</leu-checkbox-group>
|
|
15
|
-
`)
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
async function checkedFixture() {
|
|
19
|
-
return fixture(html`
|
|
20
|
-
<leu-checkbox-group>
|
|
21
|
-
<leu-checkbox value="1" disabled>Option 1</leu-checkbox>
|
|
22
|
-
<leu-checkbox value="2" checked>Option 2</leu-checkbox>
|
|
23
|
-
<leu-checkbox value="3">Option 3</leu-checkbox>
|
|
24
|
-
</leu-checkbox-group>
|
|
25
|
-
`)
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
describe("LeuCheckboxGroup", () => {
|
|
29
|
-
it("is a defined element", async () => {
|
|
30
|
-
const el = customElements.get("leu-checkbox-group")
|
|
31
|
-
|
|
32
|
-
await expect(el).not.to.be.undefined
|
|
33
|
-
})
|
|
34
|
-
|
|
35
|
-
it("passes the a11y audit", async () => {
|
|
36
|
-
const el = await defaultFixture()
|
|
37
|
-
|
|
38
|
-
await expect(el).shadowDom.to.be.accessible()
|
|
39
|
-
})
|
|
40
|
-
|
|
41
|
-
it("has a default value of an empty array", async () => {
|
|
42
|
-
const el = await defaultFixture()
|
|
43
|
-
|
|
44
|
-
expect(el.value).to.deep.equal([])
|
|
45
|
-
})
|
|
46
|
-
|
|
47
|
-
it("updates the value when a checkbox is checked", async () => {
|
|
48
|
-
const el = await defaultFixture()
|
|
49
|
-
const leuCheckbox = el.querySelector('leu-checkbox[value="2"]')
|
|
50
|
-
const checkbox = leuCheckbox.shadowRoot.querySelector("input")
|
|
51
|
-
|
|
52
|
-
checkbox.click()
|
|
53
|
-
|
|
54
|
-
expect(el.value).to.deep.equal(["2"])
|
|
55
|
-
})
|
|
56
|
-
|
|
57
|
-
it("allows multiple checkboxes to be checked", async () => {
|
|
58
|
-
const el = await defaultFixture()
|
|
59
|
-
const leuCheckbox2 = el.querySelector('leu-checkbox[value="2"]')
|
|
60
|
-
const leuCheckbox3 = el.querySelector('leu-checkbox[value="3"]')
|
|
61
|
-
const checkbox2 = leuCheckbox2.shadowRoot.querySelector("input")
|
|
62
|
-
const checkbox3 = leuCheckbox3.shadowRoot.querySelector("input")
|
|
63
|
-
|
|
64
|
-
checkbox2.click()
|
|
65
|
-
checkbox3.click()
|
|
66
|
-
|
|
67
|
-
expect(el.value).to.deep.equal(["2", "3"])
|
|
68
|
-
})
|
|
69
|
-
|
|
70
|
-
it("updates the value when a checkbox is unchecked", async () => {
|
|
71
|
-
const el = await defaultFixture()
|
|
72
|
-
const leuCheckbox = el.querySelector('leu-checkbox[value="2"]')
|
|
73
|
-
const checkbox = leuCheckbox.shadowRoot.querySelector("input")
|
|
74
|
-
|
|
75
|
-
checkbox.click()
|
|
76
|
-
checkbox.click()
|
|
77
|
-
|
|
78
|
-
expect(el.value).to.deep.equal([])
|
|
79
|
-
})
|
|
80
|
-
|
|
81
|
-
it("doesn't update the value when a disabled checkbox is clicked", async () => {
|
|
82
|
-
const el = await defaultFixture()
|
|
83
|
-
const leuCheckbox = el.querySelector('leu-checkbox[value="1"]')
|
|
84
|
-
const checkbox = leuCheckbox.shadowRoot.querySelector("input")
|
|
85
|
-
|
|
86
|
-
checkbox.click()
|
|
87
|
-
|
|
88
|
-
expect(el.value).to.deep.equal([])
|
|
89
|
-
})
|
|
90
|
-
|
|
91
|
-
it("has a default value that reflects all checked checkboxes", async () => {
|
|
92
|
-
const el = await checkedFixture()
|
|
93
|
-
|
|
94
|
-
expect(el.value).to.deep.equal(["2"])
|
|
95
|
-
})
|
|
96
|
-
|
|
97
|
-
it("delegates focus to the first active checkbox", async () => {
|
|
98
|
-
const el = await defaultFixture()
|
|
99
|
-
const leuCheckbox = el.querySelector('leu-checkbox[value="2"]')
|
|
100
|
-
const checkbox = leuCheckbox.shadowRoot.querySelector("input")
|
|
101
|
-
|
|
102
|
-
await sendKeys({
|
|
103
|
-
press: "Tab",
|
|
104
|
-
})
|
|
105
|
-
|
|
106
|
-
expect(document.activeElement).to.equal(leuCheckbox)
|
|
107
|
-
expect(leuCheckbox.shadowRoot.activeElement).to.equal(checkbox)
|
|
108
|
-
})
|
|
109
|
-
})
|
|
@@ -1,247 +0,0 @@
|
|
|
1
|
-
import { html } from "lit"
|
|
2
|
-
import { fixture, expect, elementUpdated, oneEvent } from "@open-wc/testing"
|
|
3
|
-
import { sendKeys } from "@web/test-runner-commands"
|
|
4
|
-
|
|
5
|
-
import "../leu-checkbox.js"
|
|
6
|
-
import type { LeuCheckbox } from "../leu-checkbox.js"
|
|
7
|
-
|
|
8
|
-
async function defaultFixture() {
|
|
9
|
-
return fixture<LeuCheckbox>(html`
|
|
10
|
-
<leu-checkbox value="2">Das ist ein Label</leu-checkbox>
|
|
11
|
-
`)
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
describe("LeuCheckbox", () => {
|
|
15
|
-
it("is a defined element", async () => {
|
|
16
|
-
const el = customElements.get("leu-checkbox")
|
|
17
|
-
|
|
18
|
-
await expect(el).not.to.be.undefined
|
|
19
|
-
})
|
|
20
|
-
|
|
21
|
-
it("passes the a11y audit", async () => {
|
|
22
|
-
const el = await defaultFixture()
|
|
23
|
-
|
|
24
|
-
await expect(el).shadowDom.to.be.accessible()
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
it("is not checked by default", async () => {
|
|
28
|
-
const el = await defaultFixture()
|
|
29
|
-
|
|
30
|
-
expect(el.checked).to.be.false
|
|
31
|
-
})
|
|
32
|
-
|
|
33
|
-
it("toggles the checked property when clicked", async () => {
|
|
34
|
-
const el = await defaultFixture()
|
|
35
|
-
const checkbox = el.shadowRoot.querySelector("input")
|
|
36
|
-
const label = el.shadowRoot.querySelector("label")
|
|
37
|
-
|
|
38
|
-
checkbox.click()
|
|
39
|
-
await elementUpdated(el)
|
|
40
|
-
|
|
41
|
-
expect(el.checked).to.be.true
|
|
42
|
-
|
|
43
|
-
label.click()
|
|
44
|
-
await elementUpdated(el)
|
|
45
|
-
|
|
46
|
-
expect(el.checked).to.be.false
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
it("does not toggle the checked property when disabled", async () => {
|
|
50
|
-
const el = await defaultFixture()
|
|
51
|
-
const checkbox = el.shadowRoot.querySelector("input")
|
|
52
|
-
const label = el.shadowRoot.querySelector("label")
|
|
53
|
-
|
|
54
|
-
el.disabled = true
|
|
55
|
-
await elementUpdated(el)
|
|
56
|
-
|
|
57
|
-
checkbox.click()
|
|
58
|
-
await elementUpdated(el)
|
|
59
|
-
|
|
60
|
-
expect(el.checked).to.be.false
|
|
61
|
-
|
|
62
|
-
label.click()
|
|
63
|
-
await elementUpdated(el)
|
|
64
|
-
|
|
65
|
-
expect(el.checked).to.be.false
|
|
66
|
-
})
|
|
67
|
-
|
|
68
|
-
it("toggles the checked property when the space key is pressed", async () => {
|
|
69
|
-
const el = await defaultFixture()
|
|
70
|
-
el.focus()
|
|
71
|
-
|
|
72
|
-
await sendKeys({
|
|
73
|
-
press: "Space",
|
|
74
|
-
})
|
|
75
|
-
|
|
76
|
-
expect(el.checked).to.be.true
|
|
77
|
-
|
|
78
|
-
await sendKeys({
|
|
79
|
-
press: "Space",
|
|
80
|
-
})
|
|
81
|
-
|
|
82
|
-
expect(el.checked).to.be.false
|
|
83
|
-
})
|
|
84
|
-
|
|
85
|
-
it("fires a change event when clicked", async () => {
|
|
86
|
-
const el = await defaultFixture()
|
|
87
|
-
const checkbox = el.shadowRoot.querySelector("input")
|
|
88
|
-
|
|
89
|
-
setTimeout(() => checkbox.click())
|
|
90
|
-
const event = await oneEvent(el, "change", false)
|
|
91
|
-
|
|
92
|
-
expect(event).to.exist
|
|
93
|
-
})
|
|
94
|
-
|
|
95
|
-
it("fires an input event when clicked", async () => {
|
|
96
|
-
const el = await defaultFixture()
|
|
97
|
-
const checkbox = el.shadowRoot.querySelector("input")
|
|
98
|
-
|
|
99
|
-
setTimeout(() => checkbox.click())
|
|
100
|
-
const event = await oneEvent(el, "input", false)
|
|
101
|
-
|
|
102
|
-
expect(event).to.exist
|
|
103
|
-
})
|
|
104
|
-
|
|
105
|
-
it("appends the value to the form data when checked", async () => {
|
|
106
|
-
const form = await fixture<HTMLFormElement>(html`
|
|
107
|
-
<form>
|
|
108
|
-
<leu-checkbox name="checkbox" value="2" checked></leu-checkbox>
|
|
109
|
-
</form>
|
|
110
|
-
`)
|
|
111
|
-
|
|
112
|
-
const formData = new FormData(form)
|
|
113
|
-
expect(formData.get("checkbox")).to.equal("2")
|
|
114
|
-
})
|
|
115
|
-
|
|
116
|
-
it("appends 'on' to the form data when checked and no value is set", async () => {
|
|
117
|
-
const form = await fixture<HTMLFormElement>(html`
|
|
118
|
-
<form>
|
|
119
|
-
<leu-checkbox name="checkbox" checked></leu-checkbox>
|
|
120
|
-
</form>
|
|
121
|
-
`)
|
|
122
|
-
|
|
123
|
-
let formData = new FormData(form)
|
|
124
|
-
expect(formData.get("checkbox")).to.equal("on")
|
|
125
|
-
|
|
126
|
-
const checkbox = form.querySelector<LeuCheckbox>("leu-checkbox")
|
|
127
|
-
checkbox.value = ""
|
|
128
|
-
await elementUpdated(checkbox)
|
|
129
|
-
|
|
130
|
-
formData = new FormData(form)
|
|
131
|
-
expect(formData.get("checkbox")).to.equal("")
|
|
132
|
-
})
|
|
133
|
-
|
|
134
|
-
it("does not append the value to the form data when unchecked", async () => {
|
|
135
|
-
const form = await fixture<HTMLFormElement>(html`
|
|
136
|
-
<form>
|
|
137
|
-
<leu-checkbox name="checkbox" value="2"></leu-checkbox>
|
|
138
|
-
</form>
|
|
139
|
-
`)
|
|
140
|
-
|
|
141
|
-
const formData = new FormData(form)
|
|
142
|
-
expect(formData.get("checkbox")).to.be.null
|
|
143
|
-
})
|
|
144
|
-
|
|
145
|
-
it("does not append the value to the form data when disabled", async () => {
|
|
146
|
-
const form = await fixture<HTMLFormElement>(html`
|
|
147
|
-
<form>
|
|
148
|
-
<leu-checkbox name="checkbox" value="2" checked disabled></leu-checkbox>
|
|
149
|
-
</form>
|
|
150
|
-
`)
|
|
151
|
-
|
|
152
|
-
const formData = new FormData(form)
|
|
153
|
-
expect(formData.get("checkbox")).to.be.null
|
|
154
|
-
})
|
|
155
|
-
|
|
156
|
-
it("resets to the default checked state when the form is reset", async () => {
|
|
157
|
-
const form = await fixture<HTMLFormElement>(html`
|
|
158
|
-
<form>
|
|
159
|
-
<leu-checkbox name="checkbox" value="2" checked></leu-checkbox>
|
|
160
|
-
<button type="reset">Reset</button>
|
|
161
|
-
</form>
|
|
162
|
-
`)
|
|
163
|
-
|
|
164
|
-
const checkbox = form.querySelector<LeuCheckbox>("leu-checkbox")
|
|
165
|
-
checkbox.checked = false
|
|
166
|
-
await elementUpdated(checkbox)
|
|
167
|
-
|
|
168
|
-
form.reset()
|
|
169
|
-
await elementUpdated(checkbox)
|
|
170
|
-
|
|
171
|
-
expect(checkbox.checked).to.be.true
|
|
172
|
-
})
|
|
173
|
-
|
|
174
|
-
it("updates the form data when the value and disabled state changes", async () => {
|
|
175
|
-
const form = await fixture<HTMLFormElement>(html`
|
|
176
|
-
<form>
|
|
177
|
-
<leu-checkbox name="checkbox" value="2"></leu-checkbox>
|
|
178
|
-
</form>
|
|
179
|
-
`)
|
|
180
|
-
|
|
181
|
-
const checkbox = form.querySelector<LeuCheckbox>("leu-checkbox")
|
|
182
|
-
checkbox.checked = true
|
|
183
|
-
await elementUpdated(checkbox)
|
|
184
|
-
|
|
185
|
-
let formData = new FormData(form)
|
|
186
|
-
expect(formData.get("checkbox")).to.equal("2")
|
|
187
|
-
|
|
188
|
-
checkbox.value = "another_value"
|
|
189
|
-
await elementUpdated(checkbox)
|
|
190
|
-
|
|
191
|
-
formData = new FormData(form)
|
|
192
|
-
expect(formData.get("checkbox")).to.be.equal("another_value")
|
|
193
|
-
|
|
194
|
-
checkbox.disabled = true
|
|
195
|
-
await elementUpdated(checkbox)
|
|
196
|
-
|
|
197
|
-
formData = new FormData(form)
|
|
198
|
-
expect(formData.get("checkbox")).to.be.null
|
|
199
|
-
})
|
|
200
|
-
|
|
201
|
-
it("updates the form data when the defaultChecked state changes before any interaction", async () => {
|
|
202
|
-
const form = await fixture<HTMLFormElement>(html`
|
|
203
|
-
<form>
|
|
204
|
-
<leu-checkbox name="checkbox" value="2" checked></leu-checkbox>
|
|
205
|
-
</form>
|
|
206
|
-
`)
|
|
207
|
-
|
|
208
|
-
// Reset the default value to unchecked. Should have an effect since the user has not interacted with the checkbox yet.
|
|
209
|
-
const checkbox = form.querySelector<LeuCheckbox>("leu-checkbox")
|
|
210
|
-
checkbox.defaultChecked = false
|
|
211
|
-
await elementUpdated(checkbox)
|
|
212
|
-
|
|
213
|
-
let formData = new FormData(form)
|
|
214
|
-
expect(formData.get("checkbox")).to.be.null
|
|
215
|
-
|
|
216
|
-
// Simulate user interaction by clicking the checkbox, which should check it and update the form data.
|
|
217
|
-
const innerCheckbox =
|
|
218
|
-
checkbox.shadowRoot.querySelector<HTMLInputElement>("input")
|
|
219
|
-
innerCheckbox.click()
|
|
220
|
-
|
|
221
|
-
await elementUpdated(checkbox)
|
|
222
|
-
|
|
223
|
-
formData = new FormData(form)
|
|
224
|
-
expect(formData.get("checkbox")).to.equal("2")
|
|
225
|
-
|
|
226
|
-
// This change of defaultChecked should not have an effect since the user has already interacted with the checkbox.
|
|
227
|
-
checkbox.defaultChecked = true
|
|
228
|
-
checkbox.checked = false
|
|
229
|
-
await elementUpdated(checkbox)
|
|
230
|
-
|
|
231
|
-
formData = new FormData(form)
|
|
232
|
-
expect(formData.get("checkbox")).to.be.null
|
|
233
|
-
})
|
|
234
|
-
|
|
235
|
-
it("should be invalid when the required attribute is set and not checked", async () => {
|
|
236
|
-
const form = await fixture<HTMLFormElement>(html`
|
|
237
|
-
<form>
|
|
238
|
-
<leu-checkbox name="checkbox" value="2" required></leu-checkbox>
|
|
239
|
-
</form>
|
|
240
|
-
`)
|
|
241
|
-
|
|
242
|
-
const checkbox = form.querySelector<LeuCheckbox>("leu-checkbox")
|
|
243
|
-
|
|
244
|
-
expect(checkbox.validity.valid).to.be.false
|
|
245
|
-
expect(form.checkValidity()).to.be.false
|
|
246
|
-
})
|
|
247
|
-
})
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { property } from "lit/decorators.js"
|
|
2
|
-
import { LeuElement } from "../../lib/LeuElement.js"
|
|
3
|
-
|
|
4
|
-
import styles from "./chip.css?inline"
|
|
5
|
-
|
|
6
|
-
/* Design: https://www.figma.com/file/d6Pv21UVUbnBs3AdcZijHmbN/KTZH-Design-System?type=design&node-id=21161-184433&mode=design&t=Kjo5VDiqivihn8dh-11 */
|
|
7
|
-
|
|
8
|
-
export class LeuChipBase extends LeuElement {
|
|
9
|
-
static styles = [LeuElement.styles, styles]
|
|
10
|
-
|
|
11
|
-
/** @internal */
|
|
12
|
-
static shadowRootOptions = {
|
|
13
|
-
...LeuElement.shadowRootOptions,
|
|
14
|
-
delegatesFocus: true,
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
@property({ type: Boolean, reflect: true })
|
|
18
|
-
inverted: boolean = false
|
|
19
|
-
}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { html, unsafeStatic } from "lit/static-html.js"
|
|
2
|
-
import { property } from "lit/decorators.js"
|
|
3
|
-
|
|
4
|
-
import { LeuElement } from "../../lib/LeuElement.js"
|
|
5
|
-
|
|
6
|
-
import styles from "./chip-group.css?inline"
|
|
7
|
-
import { LeuChipSelectable } from "./ChipSelectable.js"
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* @slot - Place leu-chip-* elements inside this slot
|
|
11
|
-
* @cssproperty --leu-chip-group-gap - The gap between the chips
|
|
12
|
-
* @tagname leu-chip-group
|
|
13
|
-
*/
|
|
14
|
-
export class LeuChipGroup extends LeuElement {
|
|
15
|
-
static styles = [LeuElement.styles, styles]
|
|
16
|
-
|
|
17
|
-
@property({ type: Boolean, reflect: true })
|
|
18
|
-
inverted: boolean = false
|
|
19
|
-
|
|
20
|
-
@property({ type: String, attribute: "selection-mode", reflect: true })
|
|
21
|
-
selectionMode: "single" | "multiple" | "none" = "none"
|
|
22
|
-
|
|
23
|
-
@property({ type: Number, attribute: "heading-level", reflect: true })
|
|
24
|
-
headingLevel: number = 2
|
|
25
|
-
|
|
26
|
-
@property({ type: String, reflect: true })
|
|
27
|
-
label: string = ""
|
|
28
|
-
|
|
29
|
-
protected selectableItems: Array<LeuChipSelectable> = []
|
|
30
|
-
|
|
31
|
-
connectedCallback() {
|
|
32
|
-
super.connectedCallback()
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* It is technically possible to add an event listener to the host element
|
|
36
|
-
* before it is connected to the dom. In that case the outside event listener would
|
|
37
|
-
* be called before the following event listener. But at this point multiple
|
|
38
|
-
* radio chips could be selected at the same time because `handleInput` hasn't been
|
|
39
|
-
* called yet. That's why we use the capture phase.
|
|
40
|
-
*/
|
|
41
|
-
this.addEventListener("input", this.handleInput, { capture: true })
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
disconnectedCallback() {
|
|
45
|
-
super.disconnectedCallback()
|
|
46
|
-
|
|
47
|
-
this.removeEventListener("input", this.handleInput, { capture: true })
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
get value() {
|
|
51
|
-
return this.selectableItems
|
|
52
|
-
.filter((i) => i.checked)
|
|
53
|
-
.map((i) => i.getValue())
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Checks the items with the given values.
|
|
58
|
-
* If the selectionMode is single, only the first item with the given value is checked.
|
|
59
|
-
*/
|
|
60
|
-
set value(valueList: string[]) {
|
|
61
|
-
let hasChanged = false
|
|
62
|
-
|
|
63
|
-
for (const item of this.selectableItems) {
|
|
64
|
-
item.checked = hasChanged ? false : valueList.includes(item.value)
|
|
65
|
-
|
|
66
|
-
if (this.selectionMode === "single" && item.checked) {
|
|
67
|
-
hasChanged = true
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Determines the heading tag of the accordion toggle.
|
|
74
|
-
* The headingLevel shouldn't be used directly to render the heading tag
|
|
75
|
-
* in order to avoid XSS issues.
|
|
76
|
-
* @internal
|
|
77
|
-
*/
|
|
78
|
-
protected _getHeadingTag() {
|
|
79
|
-
let level = 2
|
|
80
|
-
if (this.headingLevel > 0 && this.headingLevel < 7) {
|
|
81
|
-
level = this.headingLevel
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
return `h${level}`
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
protected handleInput = (e: Event & { target: LeuChipSelectable }) => {
|
|
88
|
-
if (this.selectionMode === "single") {
|
|
89
|
-
this.selectableItems.forEach((item) => {
|
|
90
|
-
item.checked = item === e.target
|
|
91
|
-
})
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
protected handleSlotChange = (e: Event & { target: HTMLSlotElement }) => {
|
|
96
|
-
const slot = e.target
|
|
97
|
-
const items = slot
|
|
98
|
-
.assignedElements({ flatten: true })
|
|
99
|
-
.filter((el) => el instanceof LeuChipSelectable)
|
|
100
|
-
|
|
101
|
-
this.selectableItems = items
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
render() {
|
|
105
|
-
const hTag = this._getHeadingTag()
|
|
106
|
-
|
|
107
|
-
/* The eslint rules don't recognize html import from lit/static-html.js */
|
|
108
|
-
/* eslint-disable lit/binding-positions, lit/no-invalid-html */
|
|
109
|
-
return html`
|
|
110
|
-
${this.label
|
|
111
|
-
? html`<${unsafeStatic(hTag)} class="label">
|
|
112
|
-
<span class="label">${this.label}</span>
|
|
113
|
-
</${unsafeStatic(hTag)}>`
|
|
114
|
-
: ""}
|
|
115
|
-
<slot
|
|
116
|
-
class="group"
|
|
117
|
-
part="group"
|
|
118
|
-
@slotchange=${this.handleSlotChange}
|
|
119
|
-
></slot>
|
|
120
|
-
`
|
|
121
|
-
}
|
|
122
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { html } from "lit"
|
|
2
|
-
import { property } from "lit/decorators.js"
|
|
3
|
-
|
|
4
|
-
import { LeuChipBase } from "./Chip.js"
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* @tagname leu-chip-link
|
|
8
|
-
* @slot - The content of the chip
|
|
9
|
-
*/
|
|
10
|
-
export class LeuChipLink extends LeuChipBase {
|
|
11
|
-
/** The size of the chip */
|
|
12
|
-
@property({ type: String, reflect: true })
|
|
13
|
-
size: "regular" | "large" = "regular"
|
|
14
|
-
|
|
15
|
-
/** The URL that the chip links to */
|
|
16
|
-
@property({ type: String, reflect: true })
|
|
17
|
-
href: string = ""
|
|
18
|
-
|
|
19
|
-
render() {
|
|
20
|
-
return html`<a href=${this.href} class="button">
|
|
21
|
-
<span class="label"><slot></slot></span>
|
|
22
|
-
</a>`
|
|
23
|
-
}
|
|
24
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { html } from "lit"
|
|
2
|
-
import { property } from "lit/decorators.js"
|
|
3
|
-
|
|
4
|
-
import { LeuChipBase } from "./Chip.js"
|
|
5
|
-
import { LeuIcon } from "../icon/Icon.js"
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @slot - The content of the chip
|
|
9
|
-
* @tagname leu-chip-removable
|
|
10
|
-
* @fires remove - Dispatched when the user clicks on the chip
|
|
11
|
-
* @prop {string} value - The value of the chip.
|
|
12
|
-
*/
|
|
13
|
-
export class LeuChipRemovable extends LeuChipBase {
|
|
14
|
-
static dependencies = {
|
|
15
|
-
"leu-icon": LeuIcon,
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
@property({ type: String, reflect: true })
|
|
19
|
-
value: string = ""
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Returns the value of the chip. If `value` is not set, it will return the text content
|
|
23
|
-
*/
|
|
24
|
-
getValue() {
|
|
25
|
-
return this.value || this.textContent.trim()
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
protected handleClick() {
|
|
29
|
-
const customEvent = new CustomEvent("leu:remove", {
|
|
30
|
-
bubbles: true,
|
|
31
|
-
composed: true,
|
|
32
|
-
detail: {
|
|
33
|
-
value: this.getValue(),
|
|
34
|
-
},
|
|
35
|
-
})
|
|
36
|
-
this.dispatchEvent(customEvent)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
render() {
|
|
40
|
-
return html`<button @click=${(e) => this.handleClick(e)} class="button">
|
|
41
|
-
<span class="label"><slot></slot></span>
|
|
42
|
-
<leu-icon name="close" class="icon"></leu-icon>
|
|
43
|
-
</button>`
|
|
44
|
-
}
|
|
45
|
-
}
|