@sixbell-telco/sdk
Version:
A collection of reusable components designed for use in Sixbell Telco Angular projects
1 lines • 16.5 kB
Source Map (JSON)
{"version":3,"file":"sixbell-telco-sdk-components-dropdown.mjs","sources":["../../../projects/sdk/components/dropdown/src/dropdown.component.ts","../../../projects/sdk/components/dropdown/src/dropdown.component.html","../../../projects/sdk/components/dropdown/dropdown-item/dropdown-item.component.ts","../../../projects/sdk/components/dropdown/dropdown-item/dropdown-item.component.html","../../../projects/sdk/components/dropdown/sixbell-telco-sdk-components-dropdown.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, computed, input, model, output } from '@angular/core';\nimport { IconComponent } from '@sixbell-telco/sdk/components/icon';\nimport { ClickOutsideDirective } from '@sixbell-telco/sdk/directives/click-outside';\nimport { cn } from '@sixbell-telco/sdk/utils/cn';\nimport { cva, cx } from 'class-variance-authority';\n\n/**\n * @internal\n * Generates base dropdown button classes with style variants\n */\nexport const dropdownButton = cva(['btn', 'text-pretty', 'font-medium', 'leading-normal', 'items-center', 'align-top'], {\n\tvariants: {\n\t\tvariant: {\n\t\t\tprimary: ['btn-primary'],\n\t\t\tsecondary: ['btn-secondary'],\n\t\t\ttertiary: ['btn-tertiary'],\n\t\t\taccent: ['btn-accent'],\n\t\t\tinfo: ['btn-info'],\n\t\t\tsuccess: ['btn-success'],\n\t\t\twarning: ['btn-warning'],\n\t\t\terror: ['btn-error'],\n\t\t\ticon: [\n\t\t\t\t'btn-ghost',\n\t\t\t\t'text-neutral',\n\t\t\t\t'hover:text-primary',\n\t\t\t\t'hover:bg-transparent',\n\t\t\t\t'active:focus:bg-transparent',\n\t\t\t\t'active:focus:border-transparent',\n\t\t\t\t'focus-visible:outline-current',\n\t\t\t],\n\t\t},\n\t\tsize: {\n\t\t\txs: ['btn-xs'],\n\t\t\tsm: ['btn-sm'],\n\t\t\tmd: ['btn-md'],\n\t\t\tlg: ['btn-lg'],\n\t\t\txl: ['btn-xl'],\n\t\t},\n\t\ticonPosition: {\n\t\t\tleft: [''],\n\t\t\tright: ['flex-row-reverse'],\n\t\t},\n\t},\n\tcompoundVariants: [],\n\tdefaultVariants: {\n\t\tvariant: 'secondary',\n\t\tsize: 'md',\n\t\ticonPosition: 'left',\n\t},\n});\n\n/** Possible dropdown button style variants */\nexport type DropdownButtonVariantProps =\n\t| 'primary'\n\t| 'secondary'\n\t| 'tertiary'\n\t| 'accent'\n\t| 'info'\n\t| 'success'\n\t| 'warning'\n\t| 'error'\n\t| 'icon'\n\t| null\n\t| undefined;\n\n/** Possible dropdown button alignment options */\nexport type DropdownButtonAlignmentProps = 'center' | 'left' | 'right' | null | undefined;\n\n/** Possible dropdown button icon positions */\nexport type DropdownButtonPositionProps = 'left' | 'right' | null | undefined;\n\n/** Possible dropdown button size variants */\nexport type DropdownButtonSizeProps = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | null | undefined;\n\n/**\n * @internal\n * Generates base dropdown menu classes with positioning variants\n */\nexport const dropdownMenu = cva(['dropdown'], {\n\tvariants: {\n\t\tmenuPosition: {\n\t\t\ttop: ['dropdown-top'],\n\t\t\tbottom: ['dropdown-bottom'],\n\t\t\tright: ['dropdown-right'],\n\t\t\tleft: ['dropdown-left'],\n\t\t},\n\t\tmenuAlignment: {\n\t\t\tstart: [''],\n\t\t\tend: ['dropdown-end'],\n\t\t},\n\t},\n\tcompoundVariants: [],\n\tdefaultVariants: {\n\t\tmenuPosition: 'bottom',\n\t\tmenuAlignment: 'start',\n\t},\n});\n\n/** Possible dropdown menu position variants */\nexport type DropdownMenuPositionProps = 'top' | 'bottom' | 'right' | 'left' | null | undefined;\n\n/** Possible dropdown menu alignment variants */\nexport type DropdownMenuAlignmentProps = 'start' | 'end' | null | undefined;\n\n/** Configuration object for dropdown styling variants */\nexport type DropdownProps = {\n\tvariant?: DropdownButtonVariantProps;\n\talignment?: DropdownButtonAlignmentProps;\n\tmenuAlignment?: DropdownMenuAlignmentProps;\n\tmenuPosition?: DropdownMenuPositionProps;\n\ticonPosition?: DropdownButtonPositionProps;\n};\n\n/**\n * @internal\n * Combines dropdown button and menu classes\n */\nexport const dropdownComponent = ({ variant, menuAlignment, menuPosition, iconPosition }: DropdownProps = {}) =>\n\tcx(dropdownButton({ variant, iconPosition }), dropdownMenu({ menuAlignment, menuPosition }));\n\n/**\n * A customizable dropdown component with menu positioning and various styling options\n *\n * @remarks\n * Built with Tailwind CSS and class-variance-authority for style management.\n * Supports multiple button variants, menu positioning, and responsive behavior.\n *\n * @example\n * ```html\n * <st-dropdown\n * variant=\"primary\"\n * menuPosition=\"bottom\"\n * menuAlignment=\"end\"\n * icon=\"chevron-down\"\n * >\n * <button>Actions</button>\n * <div slot=\"menu\">\n * <button class=\"menu-item\">Edit</button>\n * <button class=\"menu-item\">Delete</button>\n * </div>\n * </st-dropdown>\n * ```\n *\n * @example\n * ```html\n * <st-dropdown\n * variant=\"icon\"\n * menuPosition=\"right\"\n * icon=\"more-vertical\"\n * >\n * <div slot=\"menu\">...</div>\n * </st-dropdown>\n * ```\n */\n@Component({\n\tselector: 'st-dropdown',\n\timports: [CommonModule, ClickOutsideDirective, IconComponent],\n\ttemplateUrl: './dropdown.component.html',\n\tstyles: '',\n})\nexport class DropdownComponent {\n\t/**\n\t * Button style variant\n\t * @defaultValue 'secondary'\n\t */\n\tvariant = input<DropdownButtonVariantProps>();\n\n\t/**\n\t * Ghost button style (transparent background)\n\t * @defaultValue false\n\t */\n\tghost = input<boolean>(false);\n\n\t/**\n\t * Outline button style (border with transparent fill)\n\t * @defaultValue false\n\t */\n\toutline = input<boolean>(false);\n\n\t/**\n\t * Link button style (appears as a hyperlink)\n\t * @defaultValue false\n\t */\n\tlink = input<boolean>(false);\n\n\t/**\n\t * Soft button style (muted/subdued color variant)\n\t * @defaultValue false\n\t */\n\tsoft = input<boolean>(false);\n\n\t/**\n\t * Dash button style (dashed border)\n\t * @defaultValue false\n\t */\n\tdash = input<boolean>(false);\n\n\t/**\n\t * Circular button shape\n\t * @defaultValue false\n\t */\n\tcircle = input<boolean>(false);\n\n\t/**\n\t * Square button shape\n\t * @defaultValue false\n\t */\n\tsquare = input<boolean>(false);\n\n\t/**\n\t * Glass effect styling\n\t * @defaultValue false\n\t */\n\tglass = input<boolean>(false);\n\n\t/**\n\t * Button size variant\n\t * @defaultValue 'md'\n\t */\n\tsize = input<DropdownButtonSizeProps>();\n\n\t/**\n\t * Add drop shadow\n\t * @defaultValue false\n\t */\n\tshadow = input<boolean>(false);\n\n\t/**\n\t * Icon name (from icon library)\n\t */\n\ticon = input<string | undefined>();\n\n\t/**\n\t * Position of icon relative to text\n\t */\n\ticonPosition = input<DropdownButtonPositionProps>();\n\n\t/**\n\t * Position of dropdown menu relative to button\n\t * @defaultValue 'bottom'\n\t */\n\tmenuPosition = input<DropdownMenuPositionProps>('bottom');\n\n\t/**\n\t * Alignment of dropdown menu content\n\t */\n\tmenuAlignment = input<DropdownMenuAlignmentProps>();\n\n\t/**\n\t * Button label text\n\t */\n\tlabel = input<string | undefined>('');\n\n\t/**\n\t * Controls dropdown open/close state\n\t * @defaultValue false\n\t */\n\tisOpened = model<boolean>(false);\n\n\t/**\n\t * Event emitted when dropdown toggle state changes\n\t */\n\ttoggled = output<boolean>();\n\n\t/**\n\t * @internal\n\t * Computed class string for the dropdown button\n\t */\n\tbuttonClass = computed(() => {\n\t\treturn cn(\n\t\t\tdropdownButton({\n\t\t\t\tvariant: this.variant(),\n\t\t\t\tsize: this.size(),\n\t\t\t\ticonPosition: this.iconPosition(),\n\t\t\t}),\n\t\t\t{\n\t\t\t\t'btn-ghost': this.ghost(),\n\t\t\t\t'btn-outline': this.outline(),\n\t\t\t\t'btn-link': this.link(),\n\t\t\t\t'btn-soft': this.soft(),\n\t\t\t\t'btn-dash': this.dash(),\n\t\t\t\t'btn-circle': this.circle(),\n\t\t\t\t'btn-square': this.square(),\n\t\t\t\tglass: this.glass(),\n\t\t\t\t'shadow-main': this.shadow(),\n\t\t\t},\n\t\t);\n\t});\n\n\t/**\n\t * @internal\n\t * Computed class string for the dropdown menu container\n\t */\n\tmenuClass = computed(() => {\n\t\treturn cn(\n\t\t\tdropdownMenu({\n\t\t\t\tmenuPosition: this.menuPosition(),\n\t\t\t\tmenuAlignment: this.menuAlignment(),\n\t\t\t}),\n\t\t);\n\t});\n\n\t/**\n\t * @internal\n\t * Computed class string for the dropdown content\n\t */\n\tdropdownContentClass = computed(() => {\n\t\treturn cn('menu dropdown-content rounded-box bg-base-300 p-2 shadow-main', {\n\t\t\t'mb-1': this.menuPosition() === 'top',\n\t\t\t'mt-1': this.menuPosition() === 'bottom',\n\t\t\t'ml-1': this.menuPosition() === 'right',\n\t\t\t'mr-1': this.menuPosition() === 'left',\n\t\t});\n\t});\n\n\t/**\n\t * @internal\n\t * Toggles dropdown visibility state\n\t */\n\thandleToggle() {\n\t\tthis.isOpened.set(!this.isOpened());\n\t\tthis.toggled.emit(this.isOpened());\n\t}\n\n\t/**\n\t * @internal\n\t * Handles click outside to close dropdown\n\t */\n\thandleClickOuside() {\n\t\tthis.isOpened.set(false);\n\t\tthis.toggled.emit(this.isOpened());\n\t}\n}\n","@let iconVar = icon();\n@let labelVar = label();\n@let isOpenedVar = isOpened();\n@let menuClassVar = menuClass();\n@let buttonClassVar = buttonClass();\n@let dropdownContentClassVar = dropdownContentClass();\n\n<details dropdown [class]=\"menuClassVar\" [attr.open]=\"isOpenedVar ? undefined : null\" stClickOutside (outsideClick)=\"handleClickOuside()\">\n\t<summary [class]=\"buttonClassVar\" (click)=\"handleToggle()\">\n\t\t@if (iconVar) {\n\t\t\t<st-icon [icon]=\"iconVar\" color=\"inherit\" size=\"auto\"></st-icon>\n\t\t}\n\t\t<div>\n\t\t\t{{ labelVar }}\n\t\t</div>\n\t</summary>\n\t<ul [class]=\"dropdownContentClassVar\">\n\t\t<ng-content></ng-content>\n\t</ul>\n</details>\n","import { Component, Host, output } from '@angular/core';\nimport { DropdownComponent } from '../src/dropdown.component';\n\n/**\n * A selectable item component for use within dropdown menus\n *\n * @remarks\n * Designed to be used inside `<st-dropdown>` components. Handles selection events\n * and automatically closes the parent dropdown when clicked.\n *\n * @example\n * ```html\n * <st-dropdown-item (selected)=\"handleItemSelect()\">\n * <st-icon icon=\"check\"></st-icon>\n * <span typography>Select Item</span>\n * </st-dropdown-item>\n * ```\n *\n * @example\n * ```html\n * <st-dropdown-item class=\"custom-item-style\" (selected)=\"logSelection()\">\n * Custom styled item\n * </st-dropdown-item>\n * ```\n */\n@Component({\n\tselector: 'st-dropdown-item',\n\tstandalone: true,\n\ttemplateUrl: './dropdown-item.component.html',\n})\nexport class DropdownItemComponent {\n\t/**\n\t * Event emitted when the item is selected\n\t */\n\tselected = output();\n\n\t/**\n\t * @internal\n\t * Reference to parent dropdown component\n\t */\n\tconstructor(@Host() private dropdown: DropdownComponent) {}\n\n\t/**\n\t * @internal\n\t * Handles item selection and dropdown state\n\t */\n\thandleSelect() {\n\t\tthis.selected.emit();\n\t\tthis.dropdown.handleToggle();\n\t}\n}\n","<!-- eslint-disable @angular-eslint/template/click-events-have-key-events -->\n<!-- eslint-disable @angular-eslint/template/interactive-supports-focus -->\n<li (click)=\"handleSelect()\">\n\t<ng-content></ng-content>\n</li>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DropdownComponent"],"mappings":"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"}