solid-tom-ui 1.0.10 → 1.0.14
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/README.md +246 -246
- package/dist/README.md +246 -246
- package/dist/components/avatar/avatar.js.map +1 -1
- package/dist/components/badge/badge.js.map +1 -1
- package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/components/button/button.js.map +1 -1
- package/dist/components/carousel/carousel.js.map +1 -1
- package/dist/components/chat-bubble/chatBubble.js.map +1 -1
- package/dist/components/checkbox/checkbox.js.map +1 -1
- package/dist/components/collapse/collapse.js.map +1 -1
- package/dist/components/context-menu/context-menu.js.map +1 -1
- package/dist/components/context-menu/context-menu.store.js.map +1 -1
- package/dist/components/divider/divider.js.map +1 -1
- package/dist/components/dropdown/dropdown.js.map +1 -1
- package/dist/components/dropdown/dropdown.store.js.map +1 -1
- package/dist/components/float-button/float-button.js.map +1 -1
- package/dist/components/hover-3d-image/hover-3d-image.js.map +1 -1
- package/dist/components/image-preview/image-preview.js.map +1 -1
- package/dist/components/input/input.js.map +1 -1
- package/dist/components/input/input.utils.js.map +1 -1
- package/dist/components/input/variants/input-color.js.map +1 -1
- package/dist/components/input/variants/input-date.js.map +1 -1
- package/dist/components/input/variants/input-number.d.ts.map +1 -1
- package/dist/components/input/variants/input-number.js +1 -1
- package/dist/components/input/variants/input-number.js.map +1 -1
- package/dist/components/input/variants/input-otp.js.map +1 -1
- package/dist/components/input/variants/input-password.js.map +1 -1
- package/dist/components/input/variants/input-radio.js.map +1 -1
- package/dist/components/input/variants/input-range.js.map +1 -1
- package/dist/components/input/variants/input-text.d.ts.map +1 -1
- package/dist/components/input/variants/input-text.js +1 -1
- package/dist/components/input/variants/input-text.js.map +1 -1
- package/dist/components/input/variants/input-textarea.js.map +1 -1
- package/dist/components/loading/loading.js.map +1 -1
- package/dist/components/mansory/mansory.js.map +1 -1
- package/dist/components/menu/menu.js.map +1 -1
- package/dist/components/menu/menu.types.d.ts +2 -3
- package/dist/components/menu/menu.types.d.ts.map +1 -1
- package/dist/components/modal/modal.js.map +1 -1
- package/dist/components/modal/modalContext.js.map +1 -1
- package/dist/components/pagination/pagination.js.map +1 -1
- package/dist/components/progress-bar/progress-bar.js.map +1 -1
- package/dist/components/qr-code/qr-code.js.map +1 -1
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/select-zone/select-zone.js.map +1 -1
- package/dist/components/skeleton/skeleton.js.map +1 -1
- package/dist/components/slider/slider.js.map +1 -1
- package/dist/components/splitter/splitter.js.map +1 -1
- package/dist/components/steps/steps.js.map +1 -1
- package/dist/components/swap/swap.js.map +1 -1
- package/dist/components/switch/switch.js.map +1 -1
- package/dist/components/tab/tab.js.map +1 -1
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/timeline/timeline.js.map +1 -1
- package/dist/components/toast/icons/ErrorIcon.js.map +1 -1
- package/dist/components/toast/icons/IconCircle.js.map +1 -1
- package/dist/components/toast/icons/InfoIcon.js.map +1 -1
- package/dist/components/toast/icons/LoaderIcon.js.map +1 -1
- package/dist/components/toast/icons/SuccessIcon.js.map +1 -1
- package/dist/components/toast/icons/WarningIcon.js.map +1 -1
- package/dist/components/toast/toast.js.map +1 -1
- package/dist/components/toast/toast.store.js.map +1 -1
- package/dist/components/tooltip/tooltip.js.map +1 -1
- package/dist/components/tour/tour.js.map +1 -1
- package/dist/components/upload/upload.js.map +1 -1
- package/dist/components/z-index/z-index.context.js.map +1 -1
- package/dist/components/z-index/z-index.js.map +1 -1
- package/dist/components/z-index/z-index.store.js.map +1 -1
- package/dist/components/z-index/z-index.types.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/skill/avatar.skill.md.txt +255 -255
- package/dist/skill/badge.skill.md.txt +223 -223
- package/dist/skill/breadcrumb.skill.md.txt +177 -177
- package/dist/skill/button.skill.md.txt +198 -198
- package/dist/skill/carousel.skill.md.txt +406 -406
- package/dist/skill/chat-bubble.skill.md.txt +342 -342
- package/dist/skill/checkbox.skill.md.txt +326 -326
- package/dist/skill/code-preview.skill.md.txt +240 -240
- package/dist/skill/collapse.skill.md.txt +329 -329
- package/dist/skill/context-menu.skill.md.txt +233 -233
- package/dist/skill/diff.skill.md.txt +244 -244
- package/dist/skill/divider.skill.md.txt +151 -151
- package/dist/skill/doc.skill.md.txt +191 -191
- package/dist/skill/drawer.skill.md.txt +157 -157
- package/dist/skill/dropdown.skill.md.txt +198 -198
- package/dist/skill/float-button.skill.md.txt +315 -315
- package/dist/skill/hover-3d-image.skill.md.txt +120 -120
- package/dist/skill/iframe.skill.md.txt +114 -114
- package/dist/skill/image-preview.skill.md.txt +162 -162
- package/dist/skill/indicator.skill.md.txt +60 -60
- package/dist/skill/input.skill.md.txt +489 -489
- package/dist/skill/loading.skill.md.txt +127 -127
- package/dist/skill/menu.skill.md.txt +476 -476
- package/dist/skill/modal.skill.md.txt +359 -359
- package/dist/skill/pagination.skill.md.txt +405 -405
- package/dist/skill/progress-bar.skill.md.txt +207 -207
- package/dist/skill/qr-code.skill.md.txt +136 -136
- package/dist/skill/rating.skill.md.txt +167 -167
- package/dist/skill/select-zone.skill.md.txt +93 -93
- package/dist/skill/select.skill.md.txt +663 -663
- package/dist/skill/skeleton.skill.md.txt +192 -192
- package/dist/skill/slider.skill.md.txt +404 -404
- package/dist/skill/splitter.skill.md.txt +411 -411
- package/dist/skill/steps.skill.md.txt +264 -264
- package/dist/skill/swap.skill.md.txt +139 -139
- package/dist/skill/switch.skill.md.txt +191 -191
- package/dist/skill/tab.skill.md.txt +484 -484
- package/dist/skill/table.example.header.md.txt +666 -666
- package/dist/skill/table.skill.md.txt +1407 -1407
- package/dist/skill/text-rotate.skill.md.txt +186 -186
- package/dist/skill/timeline.skill.md.txt +247 -247
- package/dist/skill/toast.skill.md.txt +531 -531
- package/dist/skill/tooltip.skill.md.txt +222 -222
- package/dist/skill/tour.skill.md.txt +156 -156
- package/dist/skill/upload.skill.md.txt +358 -358
- package/dist/utils/cn.js.map +1 -1
- package/dist/utils/element-tracker.js.map +1 -1
- package/dist/utils/helper.js.map +1 -1
- package/dist/utils/hoc.js.map +1 -1
- package/package.json +132 -133
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab.js","names":["cn","getColor","Tooltip","TooltipDefaultProps","cva","Pin","PinOff","Plus","X","Component","createEffect","createMemo","createSignal","createUniqueId","For","JSX","mergeProps","on","Show","TabItem","TabProps","BaseColorProps","headerVariant","variants","lift","box","border","tabPlacement","horizontal","vertical","position","top","bottom","left","right","compoundVariants","class","DEFAULT_PROPS","const","align","canAdd","canPin","canRename","preRender","color","TOOLTIP_CHAR_THRESHOLD","Tab","props","p","tabRootId","activeKey","setActiveKey","defaultActiveKey","items","key","renderedTabs","setRenderedTabs","Set","editingKey","setEditingKey","editingValue","setEditingValue","computedPosition","sortedItems","pinned","filter","item","unpinned","hasPinnedAndUnpinned","hasPinned","some","hasUnpinned","firstUnpinnedIndex","findIndex","length","find","has","prev","handleTabClick","disabled","onChange","handleMouseDown","e","MouseEvent","button","closable","preventDefault","handleRemoveTab","handleAddTab","onAdd","newItem","setItems","newKey","label","children","_tmpl$","i","onRemove","result","currentItems","currentIndex","nextItem","newSet","delete","handlePinTab","stopPropagation","newPinned","map","onPin","handleDoubleClick","handleRenameSubmit","newLabel","trim","onRename","handleRenameKeyDown","KeyboardEvent","shouldRenderContent","isActive","itemPreRender","_el$2","_tmpl$5","_el$3","firstChild","_el$5","nextSibling","_$setAttribute","_$insert","_$createComponent","each","index","when","_$memo","_tmpl$6","_el$0","_tmpl$10","$$dblclick","$$mousedown","$$click","icon","_el$1","_tmpl$7","Element","fallback","useTooltip","_el$14","_tmpl$11","needsTooltip","_el$15","opts","tooltipOptions","isCustom","customContent","tooltipProps","Omit","type","content","_$mergeProps","_el$16","_el$10","_tmpl$8","$$keydown","addEventListener","$$input","currentTarget","value","_$use","el","setTimeout","focus","select","_$effect","_el$11","_tmpl$1","_el$12","_tmpl$9","size","_el$13","_tmpl$0","_$className","_el$4","_tmpl$2","addButton","_el$6","_tmpl$4","_el$7","_el$8","_tmpl$3","_el$17","_p$","_v$","root","_v$2","header","_v$3","t","a","undefined","_$delegateEvents"],"sources":["../../../src/components/tab/tab.tsx"],"sourcesContent":["import { cn } from '@/utils/cn';\nimport { getColor } from '@/utils/helper';\nimport { Tooltip } from '@components/tooltip';\nimport type { TooltipDefaultProps } from '@components/tooltip';\nimport { cva } from 'class-variance-authority';\nimport Pin from 'lucide-solid/icons/pin';\nimport PinOff from 'lucide-solid/icons/pin-off';\nimport Plus from 'lucide-solid/icons/plus';\nimport X from 'lucide-solid/icons/x';\nimport {\n Component,\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n For,\n JSX,\n mergeProps,\n on,\n Show,\n} from 'solid-js';\nimport { TabItem, TabProps } from './tab.types';\nimport { BaseColorProps } from '@/type';\n\nconst headerVariant = cva('', {\n variants: {\n variants: {\n lift: '',\n box: '',\n border: 'rounded-none p-0',\n },\n tabPlacement: { horizontal: '', vertical: '' },\n position: { top: '', bottom: '', left: '', right: '' },\n },\n compoundVariants: [\n {\n variants: 'lift',\n position: 'top',\n class: 'pb-0',\n },\n {\n variants: 'lift',\n position: 'bottom',\n class: 'pt-0',\n },\n {\n variants: 'lift',\n tabPlacement: 'vertical',\n position: 'left',\n class: 'pr-0 overflow-x-hidden',\n },\n {\n variants: 'lift',\n tabPlacement: 'vertical',\n position: 'right',\n class: 'pl-0 overflow-x-hidden',\n },\n ],\n});\n\nconst DEFAULT_PROPS = {\n tabPlacement: 'horizontal' as const,\n position: 'top' as const,\n align: 'left' as const,\n variants: 'box' as const,\n canAdd: true,\n canPin: false,\n canRename: true,\n preRender: false,\n color: 'primary',\n};\n\nconst TOOLTIP_CHAR_THRESHOLD = 19;\n\nexport const Tab: Component<TabProps> = props => {\n const p = mergeProps(DEFAULT_PROPS, props);\n const tabRootId = createUniqueId();\n\n // Active tab key\n const [activeKey, setActiveKey] = createSignal<string>(\n p.defaultActiveKey || p.items()[0]?.key || '',\n );\n\n // Rendered tabs tracking (for lazy rendering)\n const [renderedTabs, setRenderedTabs] = createSignal<Set<string>>(new Set());\n\n // Editing state for rename feature\n const [editingKey, setEditingKey] = createSignal<string | null>(null);\n const [editingValue, setEditingValue] = createSignal<string>('');\n\n // Compute position based on tabPlacement\n const computedPosition = createMemo(() => {\n if (p.tabPlacement === 'vertical') {\n return p.position === 'left' || p.position === 'right' ? p.position : 'left';\n }\n return p.position === 'top' || p.position === 'bottom' ? p.position : 'top';\n });\n\n // Sort items: pinned first, then unpinned (maintain order within each group)\n const sortedItems = createMemo(() => {\n const items = p.items();\n const pinned = items.filter(item => item.pinned);\n const unpinned = items.filter(item => !item.pinned);\n return [...pinned, ...unpinned];\n });\n\n // Check if there are both pinned and unpinned items (for separator)\n const hasPinnedAndUnpinned = createMemo(() => {\n const items = p.items();\n const hasPinned = items.some(item => item.pinned);\n const hasUnpinned = items.some(item => !item.pinned);\n return hasPinned && hasUnpinned;\n });\n\n // Get first unpinned item index in sorted list\n const firstUnpinnedIndex = createMemo(() => {\n const items = sortedItems();\n return items.findIndex(item => !item.pinned);\n });\n\n // Update active key when items change\n createEffect(\n on(\n () => p.items(),\n items => {\n if (items.length > 0 && !items.find(item => item.key === activeKey())) {\n setActiveKey(items[0].key);\n }\n },\n ),\n );\n\n // Mark tab as rendered when it becomes active\n createEffect(\n on(activeKey, key => {\n if (key && !renderedTabs().has(key)) {\n setRenderedTabs(prev => new Set([...prev, key]));\n }\n }),\n );\n\n // Handle tab click\n const handleTabClick = (item: TabItem) => {\n if (item.disabled) return;\n setActiveKey(item.key);\n p.onChange?.(item.key);\n };\n\n // Handle middle mouse click to close tab\n const handleMouseDown = (e: MouseEvent, item: TabItem) => {\n if (e.button === 1 && item.closable !== false) {\n e.preventDefault();\n handleRemoveTab(item);\n }\n };\n\n // Handle add tab\n const handleAddTab = () => {\n if (p.onAdd) {\n const newItem = p.onAdd();\n if (newItem) {\n p.setItems(prev => [...prev, newItem]);\n setActiveKey(newItem.key);\n }\n } else {\n // Default behavior: create a new tab\n const newKey = createUniqueId();\n const newItem: TabItem = {\n key: newKey,\n label: `Tab ${p.items().length + 1}`,\n children: <div>New Tab Content</div>,\n };\n p.setItems(prev => [...prev, newItem]);\n setActiveKey(newKey);\n }\n };\n\n // Handle remove tab\n const handleRemoveTab = async (item: TabItem) => {\n if (item.closable === false) return;\n\n const label = item.label || `Tab ${p.items().findIndex(i => i.key === item.key) + 1}`;\n\n if (p.onRemove) {\n const result = await p.onRemove(item.key, label);\n if (result === false) return;\n }\n\n const currentItems = p.items();\n const currentIndex = currentItems.findIndex(i => i.key === item.key);\n\n // If removing active tab, switch to adjacent tab\n if (activeKey() === item.key) {\n const nextItem = currentItems[currentIndex + 1] || currentItems[currentIndex - 1];\n if (nextItem) {\n setActiveKey(nextItem.key);\n }\n }\n\n p.setItems(prev => prev.filter(i => i.key !== item.key));\n\n // Clean up rendered tabs\n setRenderedTabs(prev => {\n const newSet = new Set(prev);\n newSet.delete(item.key);\n return newSet;\n });\n };\n\n // Handle pin/unpin tab\n const handlePinTab = (item: TabItem, e: MouseEvent) => {\n e.stopPropagation();\n const newPinned = !item.pinned;\n\n p.setItems(prev => prev.map(i => (i.key === item.key ? { ...i, pinned: newPinned } : i)));\n\n p.onPin?.(item.key, newPinned);\n };\n\n // Handle double-click to start editing\n const handleDoubleClick = (item: TabItem, e: MouseEvent) => {\n if (!p.canRename || item.disabled) return;\n e.stopPropagation();\n const label = item.label || `Tab ${p.items().findIndex(i => i.key === item.key) + 1}`;\n setEditingKey(item.key);\n setEditingValue(label);\n };\n\n // Handle rename input blur/submit\n const handleRenameSubmit = (item: TabItem) => {\n const newLabel = editingValue().trim();\n if (newLabel && newLabel !== item.label) {\n p.setItems(prev => prev.map(i => (i.key === item.key ? { ...i, label: newLabel } : i)));\n p.onRename?.(item.key, newLabel);\n }\n setEditingKey(null);\n setEditingValue('');\n };\n\n // Handle rename input keydown\n const handleRenameKeyDown = (item: TabItem, e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleRenameSubmit(item);\n } else if (e.key === 'Escape') {\n e.preventDefault();\n setEditingKey(null);\n setEditingValue('');\n }\n };\n\n // Check if tab should be rendered\n const shouldRenderContent = (item: TabItem) => {\n const isActive = activeKey() === item.key;\n const itemPreRender = item.pinned ? true : p.preRender;\n\n if (itemPreRender) {\n return renderedTabs().has(item.key) || isActive;\n }\n return isActive;\n };\n\n return (\n <div\n id={tabRootId}\n class={cn(\n 'tab01',\n getColor(p.color!),\n `tab${p.variants === 'box' ? '23' : p.variants === 'lift' ? '24' : '25'}`,\n `tab${p.tabPlacement === 'horizontal' ? '17' : '18'}`,\n `tab${computedPosition() === 'top' ? '19' : computedPosition() === 'bottom' ? '20' : computedPosition() === 'left' ? '21' : '22'}`,\n p.class?.root,\n )}\n >\n {/* Tab Header */}\n <div\n class={cn(\n 'tab02',\n `tab${p.align === 'left' ? '26' : p.align === 'center' ? '27' : '28'}`,\n headerVariant({\n variants: p.variants,\n tabPlacement: p.tabPlacement,\n position: p.position,\n }),\n p.class?.header,\n )}\n >\n <For each={sortedItems()}>\n {(item, index) => (\n <>\n {/* Separator between pinned and unpinned */}\n <Show when={hasPinnedAndUnpinned() && index() === firstUnpinnedIndex()}>\n <div class=\"tab14\" />\n </Show>\n\n {/* Tab Item */}\n <div\n class={cn(\n 'tab03',\n editingKey() === item.key && 'bg-base-100',\n activeKey() === item.key && 'tab04',\n item.pinned && 'tab05',\n item.disabled && 'pointer-events-none opacity-50',\n p.class?.item,\n )}\n onClick={() => handleTabClick(item)}\n onMouseDown={e => handleMouseDown(e, item)}\n onDblClick={e => handleDoubleClick(item, e)}\n >\n {/* Tab Icon */}\n <Show when={item.icon}>\n <span class=\"tab06\">{item.icon as Element}</span>\n </Show>\n\n {/* Tab Label */}\n <Show\n when={editingKey() === item.key}\n fallback={\n <Show\n when={p.useTooltip}\n fallback={\n <span class=\"tab07\">\n {item.label || `Tab ${p.items().findIndex(i => i.key === item.key) + 1}`}\n </span>\n }\n >\n {(() => {\n const label =\n item.label || `Tab ${p.items().findIndex(i => i.key === item.key) + 1}`;\n const needsTooltip = label.length > TOOLTIP_CHAR_THRESHOLD;\n if (!needsTooltip) {\n return <span class=\"tab07\">{label}</span>;\n }\n const opts = p.tooltipOptions ?? {};\n const isCustom = 'customContent' in opts && opts.customContent != null;\n const tooltipProps: Omit<TooltipDefaultProps, 'children'> = isCustom\n ? {\n type: 'default',\n position: 'top' as const,\n color: p?.color as BaseColorProps,\n customContent: (opts as { customContent: JSX.Element }).customContent,\n }\n : {\n type: 'default',\n position: 'top' as const,\n color: p?.color as BaseColorProps,\n content: (opts as { content?: string }).content ?? label,\n };\n return (\n <Tooltip {...(tooltipProps as TooltipDefaultProps)}>\n <span class=\"tab07\">{label}</span>\n </Tooltip>\n );\n })()}\n </Show>\n }\n >\n <input\n ref={el =>\n setTimeout(() => {\n el?.focus();\n el?.select();\n }, 0)\n }\n type=\"text\"\n class=\"tab16\"\n value={editingValue()}\n onInput={e => setEditingValue(e.currentTarget.value)}\n onBlur={() => handleRenameSubmit(item)}\n onKeyDown={e => handleRenameKeyDown(item, e)}\n onClick={e => e.stopPropagation()}\n />\n </Show>\n\n {/* Action Buttons */}\n <Show when={p.canPin || item.closable !== false}>\n <div class=\"tab08\">\n {/* Pin Button */}\n <Show when={p.canPin}>\n <button\n class=\"tab09 tab10\"\n onClick={e => handlePinTab(item, e)}\n title={item.pinned ? 'Unpin tab' : 'Pin tab'}\n >\n <Show when={item.pinned} fallback={<Pin size={12} />}>\n <PinOff size={12} />\n </Show>\n </button>\n </Show>\n\n {/* Close Button */}\n <Show when={item.closable !== false}>\n <button\n class=\"tab09 tab11\"\n onClick={e => {\n e.stopPropagation();\n handleRemoveTab(item);\n }}\n title=\"Close tab\"\n >\n <X size={12} />\n </button>\n </Show>\n </div>\n </Show>\n </div>\n </>\n )}\n </For>\n\n {/* Add Button */}\n <Show when={p.canAdd}>\n <button\n class={cn('tab12', p.class?.addButton)}\n onClick={handleAddTab}\n title=\"Add new tab\"\n >\n <Plus size={14} />\n </button>\n </Show>\n </div>\n\n {/* Tab Content */}\n <div class={cn('tab13', p.class?.content)}>\n <Show when={p.items().length === 0}>\n <div class=\"tab15\">\n <span>No tabs available</span>\n <Show when={p.canAdd}>\n <button class=\"tab12\" onClick={handleAddTab}>\n <Pin size={14} />\n </button>\n </Show>\n </div>\n </Show>\n\n <For each={p.items()}>\n {item => (\n <Show when={shouldRenderContent(item)}>\n <div class={cn('tab29 size-full', activeKey() !== item.key && 'hidden')}>\n {item.children as Element}\n </div>\n </Show>\n )}\n </For>\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tab.js","names":["cn","getColor","Tooltip","TooltipDefaultProps","cva","Pin","PinOff","Plus","X","Component","createEffect","createMemo","createSignal","createUniqueId","For","JSX","mergeProps","on","Show","TabItem","TabProps","BaseColorProps","headerVariant","variants","lift","box","border","tabPlacement","horizontal","vertical","position","top","bottom","left","right","compoundVariants","class","DEFAULT_PROPS","const","align","canAdd","canPin","canRename","preRender","color","TOOLTIP_CHAR_THRESHOLD","Tab","props","p","tabRootId","activeKey","setActiveKey","defaultActiveKey","items","key","renderedTabs","setRenderedTabs","Set","editingKey","setEditingKey","editingValue","setEditingValue","computedPosition","sortedItems","pinned","filter","item","unpinned","hasPinnedAndUnpinned","hasPinned","some","hasUnpinned","firstUnpinnedIndex","findIndex","length","find","has","prev","handleTabClick","disabled","onChange","handleMouseDown","e","MouseEvent","button","closable","preventDefault","handleRemoveTab","handleAddTab","onAdd","newItem","setItems","newKey","label","children","_tmpl$","i","onRemove","result","currentItems","currentIndex","nextItem","newSet","delete","handlePinTab","stopPropagation","newPinned","map","onPin","handleDoubleClick","handleRenameSubmit","newLabel","trim","onRename","handleRenameKeyDown","KeyboardEvent","shouldRenderContent","isActive","itemPreRender","_el$2","_tmpl$5","_el$3","firstChild","_el$5","nextSibling","_$setAttribute","_$insert","_$createComponent","each","index","when","_$memo","_tmpl$6","_el$0","_tmpl$10","$$dblclick","$$mousedown","$$click","icon","_el$1","_tmpl$7","Element","fallback","useTooltip","_el$14","_tmpl$11","needsTooltip","_el$15","opts","tooltipOptions","isCustom","customContent","tooltipProps","Omit","type","content","_$mergeProps","_el$16","_el$10","_tmpl$8","$$keydown","addEventListener","$$input","currentTarget","value","_$use","el","setTimeout","focus","select","_$effect","_el$11","_tmpl$1","_el$12","_tmpl$9","size","_el$13","_tmpl$0","_$className","_el$4","_tmpl$2","addButton","_el$6","_tmpl$4","_el$7","_el$8","_tmpl$3","_el$17","_p$","_v$","root","_v$2","header","_v$3","t","a","undefined","_$delegateEvents"],"sources":["../../../src/components/tab/tab.tsx"],"sourcesContent":["import { cn } from '@/utils/cn';\r\nimport { getColor } from '@/utils/helper';\r\nimport { Tooltip } from '@components/tooltip';\r\nimport type { TooltipDefaultProps } from '@components/tooltip';\r\nimport { cva } from 'class-variance-authority';\r\nimport Pin from 'lucide-solid/icons/pin';\r\nimport PinOff from 'lucide-solid/icons/pin-off';\r\nimport Plus from 'lucide-solid/icons/plus';\r\nimport X from 'lucide-solid/icons/x';\r\nimport {\r\n Component,\r\n createEffect,\r\n createMemo,\r\n createSignal,\r\n createUniqueId,\r\n For,\r\n JSX,\r\n mergeProps,\r\n on,\r\n Show,\r\n} from 'solid-js';\r\nimport { TabItem, TabProps } from './tab.types';\r\nimport { BaseColorProps } from '@/type';\r\n\r\nconst headerVariant = cva('', {\r\n variants: {\r\n variants: {\r\n lift: '',\r\n box: '',\r\n border: 'rounded-none p-0',\r\n },\r\n tabPlacement: { horizontal: '', vertical: '' },\r\n position: { top: '', bottom: '', left: '', right: '' },\r\n },\r\n compoundVariants: [\r\n {\r\n variants: 'lift',\r\n position: 'top',\r\n class: 'pb-0',\r\n },\r\n {\r\n variants: 'lift',\r\n position: 'bottom',\r\n class: 'pt-0',\r\n },\r\n {\r\n variants: 'lift',\r\n tabPlacement: 'vertical',\r\n position: 'left',\r\n class: 'pr-0 overflow-x-hidden',\r\n },\r\n {\r\n variants: 'lift',\r\n tabPlacement: 'vertical',\r\n position: 'right',\r\n class: 'pl-0 overflow-x-hidden',\r\n },\r\n ],\r\n});\r\n\r\nconst DEFAULT_PROPS = {\r\n tabPlacement: 'horizontal' as const,\r\n position: 'top' as const,\r\n align: 'left' as const,\r\n variants: 'box' as const,\r\n canAdd: true,\r\n canPin: false,\r\n canRename: true,\r\n preRender: false,\r\n color: 'primary',\r\n};\r\n\r\nconst TOOLTIP_CHAR_THRESHOLD = 19;\r\n\r\nexport const Tab: Component<TabProps> = props => {\r\n const p = mergeProps(DEFAULT_PROPS, props);\r\n const tabRootId = createUniqueId();\r\n\r\n // Active tab key\r\n const [activeKey, setActiveKey] = createSignal<string>(\r\n p.defaultActiveKey || p.items()[0]?.key || '',\r\n );\r\n\r\n // Rendered tabs tracking (for lazy rendering)\r\n const [renderedTabs, setRenderedTabs] = createSignal<Set<string>>(new Set());\r\n\r\n // Editing state for rename feature\r\n const [editingKey, setEditingKey] = createSignal<string | null>(null);\r\n const [editingValue, setEditingValue] = createSignal<string>('');\r\n\r\n // Compute position based on tabPlacement\r\n const computedPosition = createMemo(() => {\r\n if (p.tabPlacement === 'vertical') {\r\n return p.position === 'left' || p.position === 'right' ? p.position : 'left';\r\n }\r\n return p.position === 'top' || p.position === 'bottom' ? p.position : 'top';\r\n });\r\n\r\n // Sort items: pinned first, then unpinned (maintain order within each group)\r\n const sortedItems = createMemo(() => {\r\n const items = p.items();\r\n const pinned = items.filter(item => item.pinned);\r\n const unpinned = items.filter(item => !item.pinned);\r\n return [...pinned, ...unpinned];\r\n });\r\n\r\n // Check if there are both pinned and unpinned items (for separator)\r\n const hasPinnedAndUnpinned = createMemo(() => {\r\n const items = p.items();\r\n const hasPinned = items.some(item => item.pinned);\r\n const hasUnpinned = items.some(item => !item.pinned);\r\n return hasPinned && hasUnpinned;\r\n });\r\n\r\n // Get first unpinned item index in sorted list\r\n const firstUnpinnedIndex = createMemo(() => {\r\n const items = sortedItems();\r\n return items.findIndex(item => !item.pinned);\r\n });\r\n\r\n // Update active key when items change\r\n createEffect(\r\n on(\r\n () => p.items(),\r\n items => {\r\n if (items.length > 0 && !items.find(item => item.key === activeKey())) {\r\n setActiveKey(items[0].key);\r\n }\r\n },\r\n ),\r\n );\r\n\r\n // Mark tab as rendered when it becomes active\r\n createEffect(\r\n on(activeKey, key => {\r\n if (key && !renderedTabs().has(key)) {\r\n setRenderedTabs(prev => new Set([...prev, key]));\r\n }\r\n }),\r\n );\r\n\r\n // Handle tab click\r\n const handleTabClick = (item: TabItem) => {\r\n if (item.disabled) return;\r\n setActiveKey(item.key);\r\n p.onChange?.(item.key);\r\n };\r\n\r\n // Handle middle mouse click to close tab\r\n const handleMouseDown = (e: MouseEvent, item: TabItem) => {\r\n if (e.button === 1 && item.closable !== false) {\r\n e.preventDefault();\r\n handleRemoveTab(item);\r\n }\r\n };\r\n\r\n // Handle add tab\r\n const handleAddTab = () => {\r\n if (p.onAdd) {\r\n const newItem = p.onAdd();\r\n if (newItem) {\r\n p.setItems(prev => [...prev, newItem]);\r\n setActiveKey(newItem.key);\r\n }\r\n } else {\r\n // Default behavior: create a new tab\r\n const newKey = createUniqueId();\r\n const newItem: TabItem = {\r\n key: newKey,\r\n label: `Tab ${p.items().length + 1}`,\r\n children: <div>New Tab Content</div>,\r\n };\r\n p.setItems(prev => [...prev, newItem]);\r\n setActiveKey(newKey);\r\n }\r\n };\r\n\r\n // Handle remove tab\r\n const handleRemoveTab = async (item: TabItem) => {\r\n if (item.closable === false) return;\r\n\r\n const label = item.label || `Tab ${p.items().findIndex(i => i.key === item.key) + 1}`;\r\n\r\n if (p.onRemove) {\r\n const result = await p.onRemove(item.key, label);\r\n if (result === false) return;\r\n }\r\n\r\n const currentItems = p.items();\r\n const currentIndex = currentItems.findIndex(i => i.key === item.key);\r\n\r\n // If removing active tab, switch to adjacent tab\r\n if (activeKey() === item.key) {\r\n const nextItem = currentItems[currentIndex + 1] || currentItems[currentIndex - 1];\r\n if (nextItem) {\r\n setActiveKey(nextItem.key);\r\n }\r\n }\r\n\r\n p.setItems(prev => prev.filter(i => i.key !== item.key));\r\n\r\n // Clean up rendered tabs\r\n setRenderedTabs(prev => {\r\n const newSet = new Set(prev);\r\n newSet.delete(item.key);\r\n return newSet;\r\n });\r\n };\r\n\r\n // Handle pin/unpin tab\r\n const handlePinTab = (item: TabItem, e: MouseEvent) => {\r\n e.stopPropagation();\r\n const newPinned = !item.pinned;\r\n\r\n p.setItems(prev => prev.map(i => (i.key === item.key ? { ...i, pinned: newPinned } : i)));\r\n\r\n p.onPin?.(item.key, newPinned);\r\n };\r\n\r\n // Handle double-click to start editing\r\n const handleDoubleClick = (item: TabItem, e: MouseEvent) => {\r\n if (!p.canRename || item.disabled) return;\r\n e.stopPropagation();\r\n const label = item.label || `Tab ${p.items().findIndex(i => i.key === item.key) + 1}`;\r\n setEditingKey(item.key);\r\n setEditingValue(label);\r\n };\r\n\r\n // Handle rename input blur/submit\r\n const handleRenameSubmit = (item: TabItem) => {\r\n const newLabel = editingValue().trim();\r\n if (newLabel && newLabel !== item.label) {\r\n p.setItems(prev => prev.map(i => (i.key === item.key ? { ...i, label: newLabel } : i)));\r\n p.onRename?.(item.key, newLabel);\r\n }\r\n setEditingKey(null);\r\n setEditingValue('');\r\n };\r\n\r\n // Handle rename input keydown\r\n const handleRenameKeyDown = (item: TabItem, e: KeyboardEvent) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n handleRenameSubmit(item);\r\n } else if (e.key === 'Escape') {\r\n e.preventDefault();\r\n setEditingKey(null);\r\n setEditingValue('');\r\n }\r\n };\r\n\r\n // Check if tab should be rendered\r\n const shouldRenderContent = (item: TabItem) => {\r\n const isActive = activeKey() === item.key;\r\n const itemPreRender = item.pinned ? true : p.preRender;\r\n\r\n if (itemPreRender) {\r\n return renderedTabs().has(item.key) || isActive;\r\n }\r\n return isActive;\r\n };\r\n\r\n return (\r\n <div\r\n id={tabRootId}\r\n class={cn(\r\n 'tab01',\r\n getColor(p.color!),\r\n `tab${p.variants === 'box' ? '23' : p.variants === 'lift' ? '24' : '25'}`,\r\n `tab${p.tabPlacement === 'horizontal' ? '17' : '18'}`,\r\n `tab${computedPosition() === 'top' ? '19' : computedPosition() === 'bottom' ? '20' : computedPosition() === 'left' ? '21' : '22'}`,\r\n p.class?.root,\r\n )}\r\n >\r\n {/* Tab Header */}\r\n <div\r\n class={cn(\r\n 'tab02',\r\n `tab${p.align === 'left' ? '26' : p.align === 'center' ? '27' : '28'}`,\r\n headerVariant({\r\n variants: p.variants,\r\n tabPlacement: p.tabPlacement,\r\n position: p.position,\r\n }),\r\n p.class?.header,\r\n )}\r\n >\r\n <For each={sortedItems()}>\r\n {(item, index) => (\r\n <>\r\n {/* Separator between pinned and unpinned */}\r\n <Show when={hasPinnedAndUnpinned() && index() === firstUnpinnedIndex()}>\r\n <div class=\"tab14\" />\r\n </Show>\r\n\r\n {/* Tab Item */}\r\n <div\r\n class={cn(\r\n 'tab03',\r\n editingKey() === item.key && 'bg-base-100',\r\n activeKey() === item.key && 'tab04',\r\n item.pinned && 'tab05',\r\n item.disabled && 'pointer-events-none opacity-50',\r\n p.class?.item,\r\n )}\r\n onClick={() => handleTabClick(item)}\r\n onMouseDown={e => handleMouseDown(e, item)}\r\n onDblClick={e => handleDoubleClick(item, e)}\r\n >\r\n {/* Tab Icon */}\r\n <Show when={item.icon}>\r\n <span class=\"tab06\">{item.icon as Element}</span>\r\n </Show>\r\n\r\n {/* Tab Label */}\r\n <Show\r\n when={editingKey() === item.key}\r\n fallback={\r\n <Show\r\n when={p.useTooltip}\r\n fallback={\r\n <span class=\"tab07\">\r\n {item.label || `Tab ${p.items().findIndex(i => i.key === item.key) + 1}`}\r\n </span>\r\n }\r\n >\r\n {(() => {\r\n const label =\r\n item.label || `Tab ${p.items().findIndex(i => i.key === item.key) + 1}`;\r\n const needsTooltip = label.length > TOOLTIP_CHAR_THRESHOLD;\r\n if (!needsTooltip) {\r\n return <span class=\"tab07\">{label}</span>;\r\n }\r\n const opts = p.tooltipOptions ?? {};\r\n const isCustom = 'customContent' in opts && opts.customContent != null;\r\n const tooltipProps: Omit<TooltipDefaultProps, 'children'> = isCustom\r\n ? {\r\n type: 'default',\r\n position: 'top' as const,\r\n color: p?.color as BaseColorProps,\r\n customContent: (opts as { customContent: JSX.Element }).customContent,\r\n }\r\n : {\r\n type: 'default',\r\n position: 'top' as const,\r\n color: p?.color as BaseColorProps,\r\n content: (opts as { content?: string }).content ?? label,\r\n };\r\n return (\r\n <Tooltip {...(tooltipProps as TooltipDefaultProps)}>\r\n <span class=\"tab07\">{label}</span>\r\n </Tooltip>\r\n );\r\n })()}\r\n </Show>\r\n }\r\n >\r\n <input\r\n ref={el =>\r\n setTimeout(() => {\r\n el?.focus();\r\n el?.select();\r\n }, 0)\r\n }\r\n type=\"text\"\r\n class=\"tab16\"\r\n value={editingValue()}\r\n onInput={e => setEditingValue(e.currentTarget.value)}\r\n onBlur={() => handleRenameSubmit(item)}\r\n onKeyDown={e => handleRenameKeyDown(item, e)}\r\n onClick={e => e.stopPropagation()}\r\n />\r\n </Show>\r\n\r\n {/* Action Buttons */}\r\n <Show when={p.canPin || item.closable !== false}>\r\n <div class=\"tab08\">\r\n {/* Pin Button */}\r\n <Show when={p.canPin}>\r\n <button\r\n class=\"tab09 tab10\"\r\n onClick={e => handlePinTab(item, e)}\r\n title={item.pinned ? 'Unpin tab' : 'Pin tab'}\r\n >\r\n <Show when={item.pinned} fallback={<Pin size={12} />}>\r\n <PinOff size={12} />\r\n </Show>\r\n </button>\r\n </Show>\r\n\r\n {/* Close Button */}\r\n <Show when={item.closable !== false}>\r\n <button\r\n class=\"tab09 tab11\"\r\n onClick={e => {\r\n e.stopPropagation();\r\n handleRemoveTab(item);\r\n }}\r\n title=\"Close tab\"\r\n >\r\n <X size={12} />\r\n </button>\r\n </Show>\r\n </div>\r\n </Show>\r\n </div>\r\n </>\r\n )}\r\n </For>\r\n\r\n {/* Add Button */}\r\n <Show when={p.canAdd}>\r\n <button\r\n class={cn('tab12', p.class?.addButton)}\r\n onClick={handleAddTab}\r\n title=\"Add new tab\"\r\n >\r\n <Plus size={14} />\r\n </button>\r\n </Show>\r\n </div>\r\n\r\n {/* Tab Content */}\r\n <div class={cn('tab13', p.class?.content)}>\r\n <Show when={p.items().length === 0}>\r\n <div class=\"tab15\">\r\n <span>No tabs available</span>\r\n <Show when={p.canAdd}>\r\n <button class=\"tab12\" onClick={handleAddTab}>\r\n <Pin size={14} />\r\n </button>\r\n </Show>\r\n </div>\r\n </Show>\r\n\r\n <For each={p.items()}>\r\n {item => (\r\n <Show when={shouldRenderContent(item)}>\r\n <div class={cn('tab29 size-full', activeKey() !== item.key && 'hidden')}>\r\n {item.children as Element}\r\n </div>\r\n </Show>\r\n )}\r\n </For>\r\n </div>\r\n </div>\r\n );\r\n};\r\n"],"mappings":"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"}
|