Files
DynamicPoll/src/webparts/dynamicPoll/components/DynamicPoll.module.scss
T
Torsten Brendgen 6bcf7c5020 feat: Update dynamic poll web part to version 1.3.0 with enhanced field mapping and configurable title
- Bump version in package.json to 1.3.0
- Add new properties for field mapping in DynamicPollWebPart.manifest.json
- Enhance DynamicPollWebPart.ts to support dynamic field mapping for polls and answers
- Implement field loading and default application logic in PollDataService.ts
- Update PollTypes.ts to include new interfaces for field mapping
- Modify DynamicPollCollection.tsx to display configurable web part title
- Update styles in DynamicPoll.module.scss for improved UI
- Add localization strings for new properties in en-us.js and de-de.js
- Update tests to reflect changes in data structure and functionality
- Validate project structure and ensure all new features are accounted for
2026-08-27 00:13:58 +02:00

101 lines
4.6 KiB
SCSS

@import '~@microsoft/sp-office-ui-fabric-core/dist/sass/SPFabricCore.scss';
.webPart { color: "[theme: neutralPrimary, default: #323130]"; font-family: "Segoe UI", "Segoe UI Web (West European)", sans-serif; }
.webPartHeading { font-size: 24px; font-weight: 300; line-height: 32px; margin: 0 0 14px; }
.poll {
background: "[theme: white, default: #ffffff]";
box-sizing: border-box;
color: "[theme: neutralPrimary, default: #323130]";
font-family: "Segoe UI", "Segoe UI Web (West European)", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;
font-size: 14px;
padding: 20px;
width: 100%;
}
.question { font-size: 22px; font-weight: 600; line-height: 1.3; margin: 0 0 16px; }
.options { border: 0; margin: 0; padding: 0; }
.option {
align-items: center;
border-bottom: 1px solid "[theme: neutralLight, default: #edebe9]";
cursor: pointer;
display: flex;
gap: 10px;
min-height: 40px;
padding: 4px 8px;
}
.option:hover { background: "[theme: neutralLighter, default: #f3f2f1]"; }
.option input { height: 16px; margin: 0; width: 16px; }
.voteButton {
background: "[theme: themePrimary, default: #0078d4]";
border: 1px solid #edebe9;
color: "[theme: white, default: #ffffff]";
cursor: pointer;
font: inherit;
font-weight: 600;
margin-top: 16px;
min-height: 32px;
padding: 6px 20px;
}
.voteButton:hover { background: "[theme: themeDark, default: #005a9e]"; }
.voteButton:focus { outline: 2px solid "[theme: neutralPrimary, default: #323130]"; outline-offset: 2px; }
.voteButton:disabled { cursor: default; opacity: .6; }
.thanks { background: "[theme: themeLighterAlt, default: #eff6fc]"; margin-bottom: 16px; padding: 10px 12px; }
.error { color: "[theme: errorText, default: #a80000]"; margin-top: 10px; }
.results { margin-top: 20px; }
.resultsHeading { font-size: 18px; font-weight: 600; margin: 0 0 12px; }
.result { margin-bottom: 12px; }
.resultHeader { display: flex; gap: 12px; justify-content: space-between; margin-bottom: 4px; }
.track { background: "[theme: neutralLighter, default: #f3f2f1]"; height: 10px; overflow: hidden; width: 100%; }
.bar { background: "[theme: themePrimary, default: #0078d4]"; height: 100%; min-width: 0; transition: width 180ms ease; }
.bar1 { background: #498205; }
.bar2 { background: #8764b8; }
.bar3 { background: #ca5010; }
.bar4 { background: #038387; }
.bar0 { background: "[theme: themePrimary, default: #0078d4]"; }
.status,
.errorStatus {
border: 1px solid "[theme: neutralLight, default: #edebe9]";
color: "[theme: neutralPrimary, default: #323130]";
font-family: "Segoe UI", "Segoe UI Web (West European)", sans-serif;
padding: 16px;
}
.errorStatus { border-color: "[theme: errorText, default: #a80000]"; color: "[theme: errorText, default: #a80000]"; }
.visuallyHidden {
clip: rect(0 0 0 0);
clip-path: inset(50%);
height: 1px;
overflow: hidden;
position: absolute;
white-space: nowrap;
width: 1px;
}
.collection { width: 100%; }
.accordionItem { border-bottom: 1px solid "[theme: neutralLight, default: #edebe9]"; }
.accordionHeader {
align-items: center;
background: "[theme: white, default: #ffffff]";
border: 0;
color: "[theme: neutralPrimary, default: #323130]";
cursor: pointer;
display: flex;
font: inherit;
font-weight: 600;
justify-content: space-between;
min-height: 44px;
padding: 8px 12px;
text-align: left;
width: 100%;
}
.accordionHeader:hover { background: "[theme: neutralLighter, default: #f3f2f1]"; }
.accordionHeader:focus { outline: 2px solid "[theme: themePrimary, default: #0078d4]"; outline-offset: -2px; }
.accordionChevron { font-family: 'FabricMDL2Icons'; font-size: 12px; margin-left: 12px; }
.accordionPanel .poll { padding-top: 14px; }
.sliderNavigation { align-items: center; display: flex; justify-content: center; margin-top: 8px; }
.sliderArrow { background: transparent; border: 0; color: "[theme: themePrimary, default: #0078d4]"; cursor: pointer; font-size: 28px; height: 32px; line-height: 24px; padding: 0; width: 36px; }
.sliderArrow:hover { background: "[theme: neutralLighter, default: #f3f2f1]"; }
.sliderArrow:focus { outline: 2px solid "[theme: themePrimary, default: #0078d4]"; }
.pagination { align-items: center; display: flex; gap: 8px; padding: 0 8px; }
.paginationDot, .paginationDotActive { background: "[theme: neutralTertiary, default: #a19f9d]"; border: 0; border-radius: 50%; cursor: pointer; height: 8px; padding: 0; width: 8px; }
.paginationDotActive { background: "[theme: themePrimary, default: #0078d4]"; height: 10px; width: 10px; }
.paginationDot:focus, .paginationDotActive:focus { outline: 2px solid "[theme: themePrimary, default: #0078d4]"; outline-offset: 2px; }