/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ import { html, ifDefined, classMap } from "../vendor/lit.all.mjs"; import "./moz-toggle.mjs"; import "../moz-support-link/moz-support-link.mjs"; export default { title: "UI Widgets/Toggle", component: "moz-toggle", argTypes: { l10nId: { options: [ "moz-toggle-label", "moz-toggle-only", "moz-toggle-aria-label", "moz-toggle-description", "moz-toggle-long-label", ], control: { type: "select" }, }, }, parameters: { status: "stable", actions: { handles: ["toggle"], }, fluent: ` moz-toggle-aria-label = .label = This is the label .aria-label = This is the aria-label moz-toggle-only = .aria-label = This is the toggle-only aria-label moz-toggle-label = .label = This is the label moz-toggle-description = .label = This is the label .description = This is the description. moz-toggle-long-label = .label = Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum libero enim, luctus eu ante a, maximus imperdiet mi. Suspendisse sodales, nisi et commodo malesuada, lectus. `, }, }; const Template = ({ pressed, disabled, label, description, ariaLabel, l10nId, supportPage, accessKey, iconSrc, hasSlottedSupportLink, nestedFields, ellipsized, inputLayout, }) => { let toggleTemplate = html` ${hasSlottedSupportLink ? html`Click me!` : ""} ${nestedFields ? html` ` : ""} `; return nestedFields ? html`${toggleTemplate}` : toggleTemplate; }; export const Default = Template.bind({}); Default.args = { pressed: true, disabled: false, l10nId: "moz-toggle-label", hasSupportLink: false, accessKey: "", supportPage: "", iconSrc: "", hasSlottedSupportLink: false, nestedFields: false, inputLayout: null, }; export const Disabled = Template.bind({}); Disabled.args = { ...Default.args, disabled: true, }; export const ToggleOnly = Template.bind({}); ToggleOnly.args = { ...Default.args, l10nId: "moz-toggle-only", }; export const WithAccesskey = Template.bind({}); WithAccesskey.args = { ...Default.args, accessKey: "h", l10nId: "moz-toggle-aria-label", }; export const WithDescription = Template.bind({}); WithDescription.args = { ...Default.args, l10nId: "moz-toggle-description", }; export const WithSupportLink = Template.bind({}); WithSupportLink.args = { ...Default.args, supportPage: "addons", }; export const WithSlottedSupportLink = Template.bind({}); WithSlottedSupportLink.args = { ...Default.args, hasSlottedSupportLink: true, }; export const WithIcon = Template.bind({}); WithIcon.args = { ...Default.args, iconSrc: "chrome://global/skin/icons/highlights.svg", }; export const WithNestedFields = Template.bind({}); WithNestedFields.args = { ...Default.args, nestedFields: true, }; export const WithEllipsizedLabel = Template.bind({}); WithEllipsizedLabel.args = { ...Default.args, ellipsized: true, l10nId: "moz-toggle-long-label", }; export const InlineEndLayout = Template.bind({}); InlineEndLayout.args = { ...Default.args, inputLayout: "inline-end", }; export const InlineEndWithDescription = Template.bind({}); InlineEndWithDescription.args = { ...Default.args, inputLayout: "inline-end", l10nId: "moz-toggle-description", }; export const InlineEndWithSupportLink = Template.bind({}); InlineEndWithSupportLink.args = { ...Default.args, inputLayout: "inline-end", l10nId: "moz-toggle-description", supportPage: "addons", }; export const InlineEndDisabled = Template.bind({}); InlineEndDisabled.args = { ...Default.args, inputLayout: "inline-end", disabled: true, }; export const InlineEndWithNestedFields = Template.bind({}); InlineEndWithNestedFields.args = { ...Default.args, inputLayout: "inline-end", nestedFields: true, };