@plasmicpkgs/antd5 0.0.136 → 0.0.139
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/.tsbuildinfo +1 -1
- package/dist/antd.esm.js +7145 -6821
- package/dist/antd.esm.js.map +1 -1
- package/dist/index.d.ts +1 -3
- package/dist/index.js +7144 -6820
- package/dist/index.js.map +1 -1
- package/dist/react-utils.d.ts +2 -1
- package/dist/registerConfigProvider.d.ts +7 -1
- package/dist/registerForm.d.ts +2 -2
- package/dist/registerSegmented.d.ts +20 -0
- package/dist/registerTabs.d.ts +2 -6
- package/package.json +6 -6
- package/skinny/react-utils-11b0221a.cjs.js +121 -0
- package/skinny/react-utils-11b0221a.cjs.js.map +1 -0
- package/skinny/react-utils-79d444f6.esm.js +112 -0
- package/skinny/react-utils-79d444f6.esm.js.map +1 -0
- package/skinny/react-utils.d.ts +2 -1
- package/skinny/registerCollapse.cjs.js +4 -4
- package/skinny/registerCollapse.cjs.js.map +1 -1
- package/skinny/registerCollapse.esm.js +3 -3
- package/skinny/registerCollapse.esm.js.map +1 -1
- package/skinny/registerConfigProvider.cjs.js +44 -13
- package/skinny/registerConfigProvider.cjs.js.map +1 -1
- package/skinny/registerConfigProvider.d.ts +7 -1
- package/skinny/registerConfigProvider.esm.js +45 -14
- package/skinny/registerConfigProvider.esm.js.map +1 -1
- package/skinny/registerForm.cjs.js +10 -7
- package/skinny/registerForm.cjs.js.map +1 -1
- package/skinny/registerForm.d.ts +2 -2
- package/skinny/registerForm.esm.js +8 -5
- package/skinny/registerForm.esm.js.map +1 -1
- package/skinny/registerSegmented.cjs.js +314 -0
- package/skinny/registerSegmented.cjs.js.map +1 -0
- package/skinny/registerSegmented.d.ts +20 -0
- package/skinny/registerSegmented.esm.js +304 -0
- package/skinny/registerSegmented.esm.js.map +1 -0
- package/skinny/registerSelect.cjs.js +372 -11
- package/skinny/registerSelect.cjs.js.map +1 -1
- package/skinny/registerSelect.esm.js +365 -4
- package/skinny/registerSelect.esm.js.map +1 -1
- package/skinny/registerTabs.cjs.js +21 -36
- package/skinny/registerTabs.cjs.js.map +1 -1
- package/skinny/registerTabs.d.ts +2 -6
- package/skinny/registerTabs.esm.js +21 -36
- package/skinny/registerTabs.esm.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerTabs.cjs.js","sources":["../src/registerTabs.tsx"],"sourcesContent":["import { Button, Tabs } from \"antd\";\nimport React, { useMemo } from \"react\";\nimport {\n Registerable,\n registerComponentHelper,\n traverseReactEltTree,\n} from \"./utils\";\nimport { ActionProps } from \"@plasmicapp/host/registerComponent\";\n\nexport const tabsComponentName = \"plasmic-antd5-tabs\";\nexport const tabItemComponentName = \"plasmic-antd5-tab-item\";\n\ntype TabItemType = NonNullable<\n React.ComponentProps<typeof Tabs>[\"items\"]\n>[number];\n\nexport const AntdTabItem: React.FC<TabItemType> = ({ children }) => {\n return <div>{children}</div>;\n};\n\nfunction getTabItems(\n items:\n | { props: { children: React.ReactElement<TabItemType>[] } }\n | React.ReactElement<TabItemType>\n): React.ReactElement<TabItemType>[] {\n if ((items as React.ReactElement<TabItemType>)?.type === AntdTabItem) {\n return [items as React.ReactElement<TabItemType>];\n }\n if (Array.isArray(items?.props?.children)) {\n return items.props.children.filter((item) => item.type === AntdTabItem);\n }\n return [];\n}\n\ntype TabsProps = Omit<\n React.ComponentProps<typeof Tabs>,\n \"items\" | \"animated\" | \"tabBarExtraContent\" | \"renderTabBar\"\n> & {\n items:\n | { props: { children: React.ReactElement<TabItemType>[] } }\n | React.ReactElement<TabItemType>;\n animated: boolean;\n animateTabBar: boolean;\n animateTabContent: boolean;\n tabBarExtraContentLeft: React.ReactNode;\n tabBarExtraContentRight: React.ReactNode;\n sticky: boolean;\n stickyOffset: number;\n tabBarBackground: string;\n tabsScopeClassName?: string;\n tabsDropdownScopeClassName?: string;\n};\n\nexport function AntdTabs(props: TabsProps) {\n const {\n items: itemsRaw,\n animated,\n animateTabBar,\n animateTabContent,\n tabBarExtraContentLeft,\n tabBarExtraContentRight,\n sticky,\n stickyOffset,\n tabBarBackground,\n className,\n tabPosition,\n tabsScopeClassName,\n tabsDropdownScopeClassName,\n ...rest\n } = props;\n const animationProp: React.ComponentProps<typeof Tabs>[\"animated\"] = useMemo(\n () =>\n animated\n ? {\n inkBar: animateTabBar,\n tabPane: animateTabContent,\n }\n : false,\n [animateTabBar, animateTabContent, animated]\n );\n const items: TabItemType[] = useMemo(() => {\n if (!React.isValidElement(itemsRaw)) return [];\n const tabItems = getTabItems(itemsRaw);\n return tabItems\n .map((currentItem) => {\n if (\n !React.isValidElement(currentItem) ||\n !React.isValidElement(currentItem.props.children)\n ) {\n return null;\n }\n\n return {\n ...currentItem.props,\n key: currentItem.key,\n children: <>{currentItem.props.children}</>,\n };\n })\n .filter((i) => i != null) as TabItemType[];\n }, [itemsRaw]);\n return (\n <Tabs\n className={`${className} ${tabsScopeClassName}`}\n popupClassName={tabsDropdownScopeClassName}\n tabBarExtraContent={{\n left: <>{tabBarExtraContentLeft}</>,\n right: <>{tabBarExtraContentRight}</>,\n }}\n tabPosition={tabPosition}\n /**\n * CAUTION: sticky tab-bars are only supported for tabPosition top.\n * In component metadata, I have specified that sticky prop is hidden when tabPosition !== \"top\".\n * however, and that's where the caution is, that does not mean that any previously set value of sticky is destroyed. It stays there, but just the prop is hidden from the Settings side menu in Plasmic Studio.\n *\n * Which is why I have to also check the tabPosition here. And that's redundant.\n */\n renderTabBar={\n sticky && tabPosition === \"top\"\n ? (props, DefaultTabBar) => (\n <div\n style={{\n zIndex: 1,\n position: \"sticky\",\n top: stickyOffset || 0,\n }}\n >\n <DefaultTabBar\n {...props}\n style={{ backgroundColor: tabBarBackground }}\n />\n </div>\n )\n : undefined\n }\n animated={animationProp}\n items={items}\n {...rest}\n />\n );\n}\n\n// function NavigateTabs({ componentProps, studioOps }: ActionProps<any>) {\n// const tabPanes: string[] = [];\n// traverseReactEltTree(getTabItems(componentProps.items), (elt) => {\n// if (elt?.type === AntdTabItem && typeof elt?.key === \"string\") {\n// tabPanes.push(elt.key);\n// }\n// });\n// const buttonStyle = {\n// width: \"100%\",\n// borderColor: \"#f3f3f2\",\n// borderRadius: 6,\n// fontSize: 12,\n// };\n// const activeKey = componentProps.activeKey;\n// const currTabPos = activeKey\n// ? tabPanes.findIndex((tabKey) => {\n// return tabKey === activeKey;\n// })\n// : 0;\n\n// return (\n// <div\n// style={{\n// width: \"100%\",\n// display: \"flex\",\n// flexDirection: \"row\",\n// gap: \"4px\",\n// justifyContent: \"space-between\",\n// }}\n// >\n// <Button\n// style={buttonStyle}\n// onClick={() => {\n// if (tabPanes.length > 0) {\n// const prevTabPos =\n// (currTabPos - 1 + tabPanes.length) % tabPanes.length;\n// studioOps.updateProps({ activeKey: tabPanes[prevTabPos] });\n// }\n// }}\n// >\n// Prev tab\n// </Button>\n// <Button\n// style={buttonStyle}\n// onClick={() => {\n// if (tabPanes.length > 0) {\n// const nextTabPos = (currTabPos + 1) % tabPanes.length;\n// studioOps.updateProps({ activeKey: tabPanes[nextTabPos] });\n// }\n// }}\n// >\n// Next tab\n// </Button>\n// </div>\n// );\n// }\n\nfunction OutlineMessage() {\n return <div>* To re-arrange tab panes, use the Outline panel</div>;\n}\n\nfunction getActiveKeyOptions(props: TabsProps) {\n const options = new Set<string>();\n traverseReactEltTree(getTabItems(props.items), (elt) => {\n if (elt?.type === AntdTabItem && typeof elt?.key === \"string\") {\n options.add(elt.key);\n }\n });\n return Array.from(options.keys());\n}\n\nexport function registerTabs(loader?: Registerable) {\n registerComponentHelper(loader, AntdTabs, {\n name: tabsComponentName,\n displayName: \"Tabs\",\n defaultStyles: {\n width: \"stretch\",\n overflow: \"scroll\",\n },\n props: {\n activeKey: {\n editOnly: true,\n displayName: \"Active tab key\",\n uncontrolledProp: \"defaultActiveKey\",\n type: \"choice\",\n description: `Initial active tab's key`,\n options: getActiveKeyOptions,\n },\n animated: {\n type: \"boolean\",\n defaultValue: true,\n description: \"Change tabs with animation\",\n },\n animateTabBar: {\n type: \"boolean\",\n defaultValue: true,\n description: \"Animate the tab bar when switching tabs\",\n hidden: (ps) => !ps.animated,\n },\n animateTabContent: {\n type: \"boolean\",\n defaultValue: false,\n description: \"Fade-in tab content when switching tabs\",\n hidden: (ps) => !ps.animated,\n },\n centered: {\n type: \"boolean\",\n description: \"Center-align the tab bar\",\n },\n type: {\n type: \"choice\",\n defaultValueHint: \"line\",\n options: [\"line\", \"card\"],\n description: \"Basic style of tabs\",\n },\n items: {\n type: \"slot\",\n hidePlaceholder: true,\n allowedComponents: [tabItemComponentName],\n ...({ mergeWithParent: true } as any), // to make the tab items selectable from the components outline pane in Plasmic Studio.\n defaultValue: [\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: \"1\",\n label: {\n type: \"text\",\n value: \"First Item\",\n },\n children: {\n type: \"text\",\n value: \"First Children\",\n },\n },\n },\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: \"2\",\n label: {\n type: \"text\",\n value: \"Second Item\",\n },\n children: {\n type: \"text\",\n value: \"Second Children\",\n },\n },\n },\n ],\n },\n size: {\n type: \"choice\",\n defaultValueHint: \"middle\",\n options: [\"large\", \"middle\", \"small\"],\n description: \"Preset tab bar size\",\n },\n tabBarExtraContentLeft: {\n type: \"slot\",\n displayName: \"Extra content on left side\",\n hidePlaceholder: true,\n },\n tabBarExtraContentRight: {\n type: \"slot\",\n displayName: \"Extra content on right side\",\n hidePlaceholder: true,\n },\n tabBarGutter: {\n type: \"number\",\n displayName: \"Tab gap\",\n description: \"Gap (in pixels) between tabs\",\n advanced: true,\n },\n tabPosition: {\n type: \"choice\",\n defaultValueHint: \"top\",\n options: [\"top\", \"right\", \"bottom\", \"left\"],\n description: \"Position of tabs\",\n },\n destroyInactiveTabPane: {\n type: \"boolean\",\n description: `Destroy/Unmount inactive tab pane when changing tab`,\n advanced: true,\n },\n sticky: {\n type: \"boolean\",\n advanced: true,\n description: \"Stick tab bar to the top of the page when scrolling.\",\n defaultValue: false,\n hidden: (ps) => ps.tabPosition !== \"top\",\n },\n stickyOffset: {\n type: \"number\",\n advanced: true,\n description:\n \"Distance (in pixels) between the sticky tab bar and the top of the page as you scroll.\",\n hidden: (ps) => ps.tabPosition !== \"top\" || !ps.sticky,\n },\n tabBarBackground: {\n type: \"color\",\n advanced: true,\n defaultValue: \"#FFF\",\n hidden: (ps) => ps.tabPosition !== \"top\" || !ps.sticky,\n },\n tabsScopeClassName: {\n type: \"styleScopeClass\",\n scopeName: \"tabs\",\n } as any,\n tabBarClassName: {\n type: \"class\",\n displayName: \"Tab bar\",\n selectors: [\n {\n selector: \":tabs.ant-tabs .ant-tabs-nav\",\n label: \"Base\",\n },\n ],\n },\n tabsDropdownScopeClassName: {\n type: \"styleScopeClass\",\n scopeName: \"tabsDropdown\",\n } as any,\n tabsDropdownClassName: {\n type: \"class\",\n displayName: \"Overflow tabs menu\",\n selectors: [\n {\n selector: \":tabsDropdown.ant-tabs-dropdown .ant-tabs-dropdown-menu\",\n label: \"Base\",\n },\n ],\n },\n onChange: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [{ name: \"activeKey\", type: \"string\" }],\n },\n onTabClick: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n { name: \"tabKey\", type: \"string\" },\n { name: \"mouseEvent\", type: \"object\" },\n ],\n },\n onTabScroll: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [{ name: \"scrollInfo\", type: \"object\" }],\n },\n },\n states: {\n activeKey: {\n type: \"writable\",\n valueProp: \"activeKey\",\n onChangeProp: \"onChange\",\n variableType: \"text\",\n },\n },\n actions: [\n // {\n // type: \"custom-action\",\n // control: NavigateTabs,\n // },\n {\n type: \"button-action\",\n label: \"Add new tab\",\n onClick: ({ componentProps, studioOps }: ActionProps<any>) => {\n // Get the first positive integer that isn't already a key\n const generateNewKey = () => {\n const keysSet = new Set<string>();\n traverseReactEltTree(getTabItems(componentProps.items), (elt) => {\n if (elt?.type === AntdTabItem && typeof elt?.key === \"string\") {\n keysSet.add(elt.key);\n }\n });\n\n for (\n let keyCandidate = 1;\n keyCandidate <= keysSet.size + 1;\n keyCandidate++\n ) {\n const strKey = keyCandidate.toString();\n if (!keysSet.has(strKey)) {\n return strKey;\n }\n }\n\n return undefined;\n };\n\n const tabKey = generateNewKey();\n studioOps.appendToSlot(\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: tabKey,\n label: {\n type: \"text\",\n value: `Tab Label ${tabKey}`,\n },\n children: {\n type: \"text\",\n value: `Tab Children ${tabKey}`,\n },\n },\n },\n \"items\"\n );\n studioOps.updateProps({ activeKey: tabKey });\n },\n },\n {\n type: \"button-action\",\n label: \"Delete current tab\",\n onClick: ({ componentProps, studioOps }: ActionProps<any>) => {\n if (componentProps.activeKey) {\n const tabPanes: string[] = [];\n traverseReactEltTree(getTabItems(componentProps.items), (elt) => {\n if (elt?.type === AntdTabItem && typeof elt?.key === \"string\") {\n tabPanes.push(elt!.key!);\n }\n });\n const activeKey = componentProps.activeKey;\n const currTabPos = tabPanes.findIndex((tabKey) => {\n return tabKey === activeKey;\n });\n\n if (currTabPos !== -1) {\n studioOps.removeFromSlotAt(currTabPos, \"items\");\n if (tabPanes.length - 1 > 0) {\n const prevTabPos =\n (currTabPos - 1 + tabPanes.length) % tabPanes.length;\n studioOps.updateProps({ activeKey: tabPanes[prevTabPos] });\n }\n }\n }\n },\n },\n {\n type: \"custom-action\",\n control: OutlineMessage,\n },\n ],\n importPath: \"@plasmicpkgs/antd5/skinny/registerTabs\",\n importName: \"AntdTabs\",\n });\n\n registerComponentHelper(loader, AntdTabItem, {\n name: tabItemComponentName,\n displayName: \"Tab Item\",\n props: {\n disabled: {\n type: \"boolean\",\n description: \"Disable this tab\",\n },\n forceRender: {\n type: \"boolean\",\n description: `Force render of content in the tab, not lazy render after clicking on the tab`,\n advanced: true,\n },\n key: {\n type: \"string\",\n description: `Unique identifier for this tab`,\n displayName: \"Tab key\",\n },\n label: {\n type: \"slot\",\n displayName: \"Tab title\",\n defaultValue: \"Tab\",\n },\n children: {\n type: \"slot\",\n hidePlaceholder: true,\n },\n },\n importPath: \"@plasmicpkgs/antd5/skinny/registerTabs\",\n importName: \"AntdTabItem\",\n parentComponentName: tabsComponentName,\n });\n}\n"],"names":["React","useMemo","Tabs","props","traverseReactEltTree","registerComponentHelper"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registerTabs.cjs.js","sources":["../src/registerTabs.tsx"],"sourcesContent":["import { ActionProps } from \"@plasmicapp/host/registerComponent\";\nimport { Tabs } from \"antd\";\nimport React, { ReactElement, useMemo } from \"react\";\nimport {\n Registerable,\n registerComponentHelper,\n traverseReactEltTree,\n} from \"./utils\";\n\nexport const tabsComponentName = \"plasmic-antd5-tabs\";\nexport const tabItemComponentName = \"plasmic-antd5-tab-item\";\n\ntype TabItemType = NonNullable<\n React.ComponentProps<typeof Tabs>[\"items\"]\n>[number];\n\nexport const AntdTabItem: React.FC<TabItemType> = ({ children }) => {\n return <div>{children}</div>;\n};\n\nfunction getTabItems(items: ReactElement): React.ReactElement<TabItemType>[] {\n return (items?.type as any)?.name == AntdTabItem.name\n ? [items]\n : items?.props.children;\n}\n\nfunction getTabItemKeys(items: ReactElement): string[] {\n const keys: string[] = [];\n traverseReactEltTree(items, (elt) => {\n if (\n (elt?.type as any)?.name === AntdTabItem.name &&\n typeof elt?.key === \"string\"\n ) {\n keys.push(`${elt.key}`);\n }\n });\n return keys;\n}\n\ntype TabsProps = Omit<\n React.ComponentProps<typeof Tabs>,\n \"items\" | \"animated\" | \"tabBarExtraContent\" | \"renderTabBar\"\n> & {\n items: ReactElement;\n animated: boolean;\n animateTabBar: boolean;\n animateTabContent: boolean;\n tabBarExtraContentLeft: React.ReactNode;\n tabBarExtraContentRight: React.ReactNode;\n sticky: boolean;\n stickyOffset: number;\n tabBarBackground: string;\n tabsScopeClassName?: string;\n tabsDropdownScopeClassName?: string;\n};\n\nexport function AntdTabs(props: TabsProps) {\n const {\n items: itemsRaw,\n animated,\n animateTabBar,\n animateTabContent,\n tabBarExtraContentLeft,\n tabBarExtraContentRight,\n sticky,\n stickyOffset,\n tabBarBackground,\n className,\n tabPosition,\n tabsScopeClassName,\n tabsDropdownScopeClassName,\n ...rest\n } = props;\n const animationProp: React.ComponentProps<typeof Tabs>[\"animated\"] = useMemo(\n () =>\n animated\n ? {\n inkBar: animateTabBar,\n tabPane: animateTabContent,\n }\n : false,\n [animateTabBar, animateTabContent, animated]\n );\n const items: TabItemType[] = useMemo(() => {\n if (!React.isValidElement(itemsRaw)) return [];\n const tabItems = getTabItems(itemsRaw);\n return tabItems\n .map((currentItem) => {\n return {\n ...currentItem.props,\n key: currentItem.key,\n children: <>{currentItem.props.children}</>,\n };\n })\n .filter((i) => i != null) as TabItemType[];\n }, [itemsRaw]);\n\n return (\n <Tabs\n className={`${className} ${tabsScopeClassName}`}\n popupClassName={tabsDropdownScopeClassName}\n tabBarExtraContent={{\n left: <>{tabBarExtraContentLeft}</>,\n right: <>{tabBarExtraContentRight}</>,\n }}\n tabPosition={tabPosition}\n /**\n * CAUTION: sticky tab-bars are only supported for tabPosition top.\n * In component metadata, I have specified that sticky prop is hidden when tabPosition !== \"top\".\n * however, and that's where the caution is, that does not mean that any previously set value of sticky is destroyed. It stays there, but just the prop is hidden from the Settings side menu in Plasmic Studio.\n *\n * Which is why I have to also check the tabPosition here. And that's redundant.\n */\n renderTabBar={\n sticky && tabPosition === \"top\"\n ? (tabBarProps, DefaultTabBar) => (\n <div\n style={{\n zIndex: 1,\n position: \"sticky\",\n top: stickyOffset || 0,\n }}\n >\n <DefaultTabBar\n {...tabBarProps}\n style={{ backgroundColor: tabBarBackground }}\n />\n </div>\n )\n : undefined\n }\n animated={animationProp}\n items={items}\n {...rest}\n />\n );\n}\n\n// function NavigateTabs({ componentProps, studioOps }: ActionProps<any>) {\n// const tabPanes: string[] = getTabItemKeys(componentProps.items);\n// const buttonStyle = {\n// width: \"100%\",\n// borderColor: \"#f3f3f2\",\n// borderRadius: 6,\n// fontSize: 12,\n// };\n// const activeKey = componentProps.activeKey;\n// const currTabPos = activeKey\n// ? tabPanes.findIndex((tabKey) => {\n// return tabKey === activeKey;\n// })\n// : 0;\n\n// return (\n// <div\n// style={{\n// width: \"100%\",\n// display: \"flex\",\n// flexDirection: \"row\",\n// gap: \"4px\",\n// justifyContent: \"space-between\",\n// }}\n// >\n// <Button\n// style={buttonStyle}\n// onClick={() => {\n// if (tabPanes.length > 0) {\n// const prevTabPos =\n// (currTabPos - 1 + tabPanes.length) % tabPanes.length;\n// studioOps.updateProps({ activeKey: tabPanes[prevTabPos] });\n// }\n// }}\n// >\n// Prev tab\n// </Button>\n// <Button\n// style={buttonStyle}\n// onClick={() => {\n// if (tabPanes.length > 0) {\n// const nextTabPos = (currTabPos + 1) % tabPanes.length;\n// studioOps.updateProps({ activeKey: tabPanes[nextTabPos] });\n// }\n// }}\n// >\n// Next tab\n// </Button>\n// </div>\n// );\n// }\n\nfunction OutlineMessage() {\n return <div>* To re-arrange tab panes, use the Outline panel</div>;\n}\n\nexport function registerTabs(loader?: Registerable) {\n registerComponentHelper(loader, AntdTabs, {\n name: tabsComponentName,\n displayName: \"Tabs\",\n defaultStyles: {\n width: \"stretch\",\n overflow: \"scroll\",\n },\n props: {\n activeKey: {\n editOnly: true,\n displayName: \"Active tab key\",\n uncontrolledProp: \"defaultActiveKey\",\n type: \"choice\",\n description: `Initial active tab's key`,\n options: (ps) => getTabItemKeys(ps.items),\n },\n animated: {\n type: \"boolean\",\n defaultValue: true,\n description: \"Change tabs with animation\",\n },\n animateTabBar: {\n type: \"boolean\",\n defaultValue: true,\n description: \"Animate the tab bar when switching tabs\",\n hidden: (ps) => !ps.animated,\n },\n animateTabContent: {\n type: \"boolean\",\n defaultValue: false,\n description: \"Fade-in tab content when switching tabs\",\n hidden: (ps) => !ps.animated,\n },\n centered: {\n type: \"boolean\",\n description: \"Center-align the tab bar\",\n },\n type: {\n type: \"choice\",\n defaultValueHint: \"line\",\n options: [\"line\", \"card\"],\n description: \"Basic style of tabs\",\n },\n items: {\n type: \"slot\",\n hidePlaceholder: true,\n allowedComponents: [tabItemComponentName],\n ...({ mergeWithParent: true } as any), // to make the tab items selectable from the components outline pane in Plasmic Studio.\n defaultValue: [\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: \"1\",\n label: {\n type: \"text\",\n value: \"First Item\",\n },\n children: {\n type: \"text\",\n value: \"First Children\",\n },\n },\n },\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: \"2\",\n label: {\n type: \"text\",\n value: \"Second Item\",\n },\n children: {\n type: \"text\",\n value: \"Second Children\",\n },\n },\n },\n ],\n },\n size: {\n type: \"choice\",\n defaultValueHint: \"middle\",\n options: [\"large\", \"middle\", \"small\"],\n description: \"Preset tab bar size\",\n },\n tabBarExtraContentLeft: {\n type: \"slot\",\n displayName: \"Extra content on left side\",\n hidePlaceholder: true,\n },\n tabBarExtraContentRight: {\n type: \"slot\",\n displayName: \"Extra content on right side\",\n hidePlaceholder: true,\n },\n tabBarGutter: {\n type: \"number\",\n displayName: \"Tab gap\",\n description: \"Gap (in pixels) between tabs\",\n advanced: true,\n },\n tabPosition: {\n type: \"choice\",\n defaultValueHint: \"top\",\n options: [\"top\", \"right\", \"bottom\", \"left\"],\n description: \"Position of tabs\",\n },\n destroyInactiveTabPane: {\n type: \"boolean\",\n description: `Destroy/Unmount inactive tab pane when changing tab`,\n advanced: true,\n },\n sticky: {\n type: \"boolean\",\n advanced: true,\n description: \"Stick tab bar to the top of the page when scrolling.\",\n defaultValue: false,\n hidden: (ps) => ps.tabPosition !== \"top\",\n },\n stickyOffset: {\n type: \"number\",\n advanced: true,\n description:\n \"Distance (in pixels) between the sticky tab bar and the top of the page as you scroll.\",\n hidden: (ps) => ps.tabPosition !== \"top\" || !ps.sticky,\n },\n tabBarBackground: {\n type: \"color\",\n advanced: true,\n defaultValue: \"#FFF\",\n hidden: (ps) => ps.tabPosition !== \"top\" || !ps.sticky,\n },\n tabsScopeClassName: {\n type: \"styleScopeClass\",\n scopeName: \"tabs\",\n } as any,\n tabBarClassName: {\n type: \"class\",\n displayName: \"Tab bar\",\n selectors: [\n {\n selector: \":tabs.ant-tabs .ant-tabs-nav\",\n label: \"Base\",\n },\n ],\n },\n tabsDropdownScopeClassName: {\n type: \"styleScopeClass\",\n scopeName: \"tabsDropdown\",\n } as any,\n tabsDropdownClassName: {\n type: \"class\",\n displayName: \"Overflow tabs menu\",\n selectors: [\n {\n selector: \":tabsDropdown.ant-tabs-dropdown .ant-tabs-dropdown-menu\",\n label: \"Base\",\n },\n ],\n },\n onChange: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [{ name: \"activeKey\", type: \"string\" }],\n },\n onTabClick: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n { name: \"tabKey\", type: \"string\" },\n { name: \"mouseEvent\", type: \"object\" },\n ],\n },\n onTabScroll: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [{ name: \"scrollInfo\", type: \"object\" }],\n },\n },\n states: {\n activeKey: {\n type: \"writable\",\n valueProp: \"activeKey\",\n onChangeProp: \"onChange\",\n variableType: \"text\",\n },\n },\n actions: [\n // {\n // type: \"custom-action\",\n // control: NavigateTabs,\n // },\n {\n type: \"button-action\",\n label: \"Add new tab\",\n onClick: ({ componentProps, studioOps }: ActionProps<any>) => {\n // Get the first positive integer that isn't already a key\n const generateNewKey = () => {\n const existingKeys = getTabItemKeys(componentProps.items);\n\n for (\n let keyCandidate = 1;\n keyCandidate <= existingKeys.length + 1;\n keyCandidate++\n ) {\n const strKey = keyCandidate.toString();\n const index = existingKeys.findIndex((k) => {\n return strKey === k;\n });\n if (index === -1) {\n return strKey;\n }\n }\n\n return undefined;\n };\n\n const tabKey = generateNewKey();\n studioOps.appendToSlot(\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: tabKey,\n label: {\n type: \"text\",\n value: `Tab Label ${tabKey}`,\n },\n children: {\n type: \"text\",\n value: `Tab Children ${tabKey}`,\n },\n },\n },\n \"items\"\n );\n studioOps.updateProps({ activeKey: tabKey });\n },\n },\n {\n type: \"button-action\",\n label: \"Delete current tab\",\n onClick: ({ componentProps, studioOps }: ActionProps<any>) => {\n if (componentProps.activeKey) {\n const tabPanes = getTabItemKeys(componentProps.items);\n const activeKey = componentProps.activeKey;\n const currTabPos = tabPanes.findIndex((tabKey) => {\n return tabKey === activeKey;\n });\n\n if (currTabPos !== -1) {\n studioOps.removeFromSlotAt(currTabPos, \"items\");\n if (tabPanes.length - 1 > 0) {\n const prevTabPos =\n (currTabPos - 1 + tabPanes.length) % tabPanes.length;\n studioOps.updateProps({ activeKey: tabPanes[prevTabPos] });\n }\n }\n }\n },\n },\n {\n type: \"custom-action\",\n control: OutlineMessage,\n },\n ],\n importPath: \"@plasmicpkgs/antd5/skinny/registerTabs\",\n importName: \"AntdTabs\",\n });\n\n registerComponentHelper(loader, AntdTabItem, {\n name: tabItemComponentName,\n displayName: \"Tab Item\",\n props: {\n disabled: {\n type: \"boolean\",\n description: \"Disable this tab\",\n },\n forceRender: {\n type: \"boolean\",\n description: `Force render of content in the tab, not lazy render after clicking on the tab`,\n advanced: true,\n },\n key: {\n type: \"string\",\n description: `Unique identifier for this tab`,\n displayName: \"Tab key\",\n },\n label: {\n type: \"slot\",\n displayName: \"Tab title\",\n defaultValue: \"Tab\",\n },\n children: {\n type: \"slot\",\n hidePlaceholder: true,\n },\n },\n importPath: \"@plasmicpkgs/antd5/skinny/registerTabs\",\n importName: \"AntdTabItem\",\n parentComponentName: tabsComponentName,\n });\n}\n"],"names":["React","traverseReactEltTree","useMemo","Tabs","registerComponentHelper"],"mappings":"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"}
|
package/skinny/registerTabs.d.ts
CHANGED
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
import { Tabs } from "antd";
|
|
2
|
-
import React from "react";
|
|
2
|
+
import React, { ReactElement } from "react";
|
|
3
3
|
import { Registerable } from "./utils";
|
|
4
4
|
export declare const tabsComponentName = "plasmic-antd5-tabs";
|
|
5
5
|
export declare const tabItemComponentName = "plasmic-antd5-tab-item";
|
|
6
6
|
type TabItemType = NonNullable<React.ComponentProps<typeof Tabs>["items"]>[number];
|
|
7
7
|
export declare const AntdTabItem: React.FC<TabItemType>;
|
|
8
8
|
type TabsProps = Omit<React.ComponentProps<typeof Tabs>, "items" | "animated" | "tabBarExtraContent" | "renderTabBar"> & {
|
|
9
|
-
items:
|
|
10
|
-
props: {
|
|
11
|
-
children: React.ReactElement<TabItemType>[];
|
|
12
|
-
};
|
|
13
|
-
} | React.ReactElement<TabItemType>;
|
|
9
|
+
items: ReactElement;
|
|
14
10
|
animated: boolean;
|
|
15
11
|
animateTabBar: boolean;
|
|
16
12
|
animateTabContent: boolean;
|
|
@@ -42,13 +42,17 @@ const AntdTabItem = ({ children }) => {
|
|
|
42
42
|
};
|
|
43
43
|
function getTabItems(items) {
|
|
44
44
|
var _a;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
45
|
+
return ((_a = items == null ? void 0 : items.type) == null ? void 0 : _a.name) == AntdTabItem.name ? [items] : items == null ? void 0 : items.props.children;
|
|
46
|
+
}
|
|
47
|
+
function getTabItemKeys(items) {
|
|
48
|
+
const keys = [];
|
|
49
|
+
traverseReactEltTree(items, (elt) => {
|
|
50
|
+
var _a;
|
|
51
|
+
if (((_a = elt == null ? void 0 : elt.type) == null ? void 0 : _a.name) === AntdTabItem.name && typeof (elt == null ? void 0 : elt.key) === "string") {
|
|
52
|
+
keys.push(`${elt.key}`);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
return keys;
|
|
52
56
|
}
|
|
53
57
|
function AntdTabs(props) {
|
|
54
58
|
const _a = props, {
|
|
@@ -92,9 +96,6 @@ function AntdTabs(props) {
|
|
|
92
96
|
return [];
|
|
93
97
|
const tabItems = getTabItems(itemsRaw);
|
|
94
98
|
return tabItems.map((currentItem) => {
|
|
95
|
-
if (!React.isValidElement(currentItem) || !React.isValidElement(currentItem.props.children)) {
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
98
99
|
return __spreadProps(__spreadValues({}, currentItem.props), {
|
|
99
100
|
key: currentItem.key,
|
|
100
101
|
children: /* @__PURE__ */ React.createElement(React.Fragment, null, currentItem.props.children)
|
|
@@ -111,7 +112,7 @@ function AntdTabs(props) {
|
|
|
111
112
|
right: /* @__PURE__ */ React.createElement(React.Fragment, null, tabBarExtraContentRight)
|
|
112
113
|
},
|
|
113
114
|
tabPosition,
|
|
114
|
-
renderTabBar: sticky && tabPosition === "top" ? (
|
|
115
|
+
renderTabBar: sticky && tabPosition === "top" ? (tabBarProps, DefaultTabBar) => /* @__PURE__ */ React.createElement(
|
|
115
116
|
"div",
|
|
116
117
|
{
|
|
117
118
|
style: {
|
|
@@ -122,7 +123,7 @@ function AntdTabs(props) {
|
|
|
122
123
|
},
|
|
123
124
|
/* @__PURE__ */ React.createElement(
|
|
124
125
|
DefaultTabBar,
|
|
125
|
-
__spreadProps(__spreadValues({},
|
|
126
|
+
__spreadProps(__spreadValues({}, tabBarProps), {
|
|
126
127
|
style: { backgroundColor: tabBarBackground }
|
|
127
128
|
})
|
|
128
129
|
)
|
|
@@ -135,15 +136,6 @@ function AntdTabs(props) {
|
|
|
135
136
|
function OutlineMessage() {
|
|
136
137
|
return /* @__PURE__ */ React.createElement("div", null, "* To re-arrange tab panes, use the Outline panel");
|
|
137
138
|
}
|
|
138
|
-
function getActiveKeyOptions(props) {
|
|
139
|
-
const options = /* @__PURE__ */ new Set();
|
|
140
|
-
traverseReactEltTree(getTabItems(props.items), (elt) => {
|
|
141
|
-
if ((elt == null ? void 0 : elt.type) === AntdTabItem && typeof (elt == null ? void 0 : elt.key) === "string") {
|
|
142
|
-
options.add(elt.key);
|
|
143
|
-
}
|
|
144
|
-
});
|
|
145
|
-
return Array.from(options.keys());
|
|
146
|
-
}
|
|
147
139
|
function registerTabs(loader) {
|
|
148
140
|
registerComponentHelper(loader, AntdTabs, {
|
|
149
141
|
name: tabsComponentName,
|
|
@@ -159,7 +151,7 @@ function registerTabs(loader) {
|
|
|
159
151
|
uncontrolledProp: "defaultActiveKey",
|
|
160
152
|
type: "choice",
|
|
161
153
|
description: `Initial active tab's key`,
|
|
162
|
-
options:
|
|
154
|
+
options: (ps) => getTabItemKeys(ps.items)
|
|
163
155
|
},
|
|
164
156
|
animated: {
|
|
165
157
|
type: "boolean",
|
|
@@ -344,15 +336,13 @@ function registerTabs(loader) {
|
|
|
344
336
|
label: "Add new tab",
|
|
345
337
|
onClick: ({ componentProps, studioOps }) => {
|
|
346
338
|
const generateNewKey = () => {
|
|
347
|
-
const
|
|
348
|
-
|
|
349
|
-
if ((elt == null ? void 0 : elt.type) === AntdTabItem && typeof (elt == null ? void 0 : elt.key) === "string") {
|
|
350
|
-
keysSet.add(elt.key);
|
|
351
|
-
}
|
|
352
|
-
});
|
|
353
|
-
for (let keyCandidate = 1; keyCandidate <= keysSet.size + 1; keyCandidate++) {
|
|
339
|
+
const existingKeys = getTabItemKeys(componentProps.items);
|
|
340
|
+
for (let keyCandidate = 1; keyCandidate <= existingKeys.length + 1; keyCandidate++) {
|
|
354
341
|
const strKey = keyCandidate.toString();
|
|
355
|
-
|
|
342
|
+
const index = existingKeys.findIndex((k) => {
|
|
343
|
+
return strKey === k;
|
|
344
|
+
});
|
|
345
|
+
if (index === -1) {
|
|
356
346
|
return strKey;
|
|
357
347
|
}
|
|
358
348
|
}
|
|
@@ -385,12 +375,7 @@ function registerTabs(loader) {
|
|
|
385
375
|
label: "Delete current tab",
|
|
386
376
|
onClick: ({ componentProps, studioOps }) => {
|
|
387
377
|
if (componentProps.activeKey) {
|
|
388
|
-
const tabPanes =
|
|
389
|
-
traverseReactEltTree(getTabItems(componentProps.items), (elt) => {
|
|
390
|
-
if ((elt == null ? void 0 : elt.type) === AntdTabItem && typeof (elt == null ? void 0 : elt.key) === "string") {
|
|
391
|
-
tabPanes.push(elt.key);
|
|
392
|
-
}
|
|
393
|
-
});
|
|
378
|
+
const tabPanes = getTabItemKeys(componentProps.items);
|
|
394
379
|
const activeKey = componentProps.activeKey;
|
|
395
380
|
const currTabPos = tabPanes.findIndex((tabKey) => {
|
|
396
381
|
return tabKey === activeKey;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerTabs.esm.js","sources":["../src/registerTabs.tsx"],"sourcesContent":["import { Button, Tabs } from \"antd\";\nimport React, { useMemo } from \"react\";\nimport {\n Registerable,\n registerComponentHelper,\n traverseReactEltTree,\n} from \"./utils\";\nimport { ActionProps } from \"@plasmicapp/host/registerComponent\";\n\nexport const tabsComponentName = \"plasmic-antd5-tabs\";\nexport const tabItemComponentName = \"plasmic-antd5-tab-item\";\n\ntype TabItemType = NonNullable<\n React.ComponentProps<typeof Tabs>[\"items\"]\n>[number];\n\nexport const AntdTabItem: React.FC<TabItemType> = ({ children }) => {\n return <div>{children}</div>;\n};\n\nfunction getTabItems(\n items:\n | { props: { children: React.ReactElement<TabItemType>[] } }\n | React.ReactElement<TabItemType>\n): React.ReactElement<TabItemType>[] {\n if ((items as React.ReactElement<TabItemType>)?.type === AntdTabItem) {\n return [items as React.ReactElement<TabItemType>];\n }\n if (Array.isArray(items?.props?.children)) {\n return items.props.children.filter((item) => item.type === AntdTabItem);\n }\n return [];\n}\n\ntype TabsProps = Omit<\n React.ComponentProps<typeof Tabs>,\n \"items\" | \"animated\" | \"tabBarExtraContent\" | \"renderTabBar\"\n> & {\n items:\n | { props: { children: React.ReactElement<TabItemType>[] } }\n | React.ReactElement<TabItemType>;\n animated: boolean;\n animateTabBar: boolean;\n animateTabContent: boolean;\n tabBarExtraContentLeft: React.ReactNode;\n tabBarExtraContentRight: React.ReactNode;\n sticky: boolean;\n stickyOffset: number;\n tabBarBackground: string;\n tabsScopeClassName?: string;\n tabsDropdownScopeClassName?: string;\n};\n\nexport function AntdTabs(props: TabsProps) {\n const {\n items: itemsRaw,\n animated,\n animateTabBar,\n animateTabContent,\n tabBarExtraContentLeft,\n tabBarExtraContentRight,\n sticky,\n stickyOffset,\n tabBarBackground,\n className,\n tabPosition,\n tabsScopeClassName,\n tabsDropdownScopeClassName,\n ...rest\n } = props;\n const animationProp: React.ComponentProps<typeof Tabs>[\"animated\"] = useMemo(\n () =>\n animated\n ? {\n inkBar: animateTabBar,\n tabPane: animateTabContent,\n }\n : false,\n [animateTabBar, animateTabContent, animated]\n );\n const items: TabItemType[] = useMemo(() => {\n if (!React.isValidElement(itemsRaw)) return [];\n const tabItems = getTabItems(itemsRaw);\n return tabItems\n .map((currentItem) => {\n if (\n !React.isValidElement(currentItem) ||\n !React.isValidElement(currentItem.props.children)\n ) {\n return null;\n }\n\n return {\n ...currentItem.props,\n key: currentItem.key,\n children: <>{currentItem.props.children}</>,\n };\n })\n .filter((i) => i != null) as TabItemType[];\n }, [itemsRaw]);\n return (\n <Tabs\n className={`${className} ${tabsScopeClassName}`}\n popupClassName={tabsDropdownScopeClassName}\n tabBarExtraContent={{\n left: <>{tabBarExtraContentLeft}</>,\n right: <>{tabBarExtraContentRight}</>,\n }}\n tabPosition={tabPosition}\n /**\n * CAUTION: sticky tab-bars are only supported for tabPosition top.\n * In component metadata, I have specified that sticky prop is hidden when tabPosition !== \"top\".\n * however, and that's where the caution is, that does not mean that any previously set value of sticky is destroyed. It stays there, but just the prop is hidden from the Settings side menu in Plasmic Studio.\n *\n * Which is why I have to also check the tabPosition here. And that's redundant.\n */\n renderTabBar={\n sticky && tabPosition === \"top\"\n ? (props, DefaultTabBar) => (\n <div\n style={{\n zIndex: 1,\n position: \"sticky\",\n top: stickyOffset || 0,\n }}\n >\n <DefaultTabBar\n {...props}\n style={{ backgroundColor: tabBarBackground }}\n />\n </div>\n )\n : undefined\n }\n animated={animationProp}\n items={items}\n {...rest}\n />\n );\n}\n\n// function NavigateTabs({ componentProps, studioOps }: ActionProps<any>) {\n// const tabPanes: string[] = [];\n// traverseReactEltTree(getTabItems(componentProps.items), (elt) => {\n// if (elt?.type === AntdTabItem && typeof elt?.key === \"string\") {\n// tabPanes.push(elt.key);\n// }\n// });\n// const buttonStyle = {\n// width: \"100%\",\n// borderColor: \"#f3f3f2\",\n// borderRadius: 6,\n// fontSize: 12,\n// };\n// const activeKey = componentProps.activeKey;\n// const currTabPos = activeKey\n// ? tabPanes.findIndex((tabKey) => {\n// return tabKey === activeKey;\n// })\n// : 0;\n\n// return (\n// <div\n// style={{\n// width: \"100%\",\n// display: \"flex\",\n// flexDirection: \"row\",\n// gap: \"4px\",\n// justifyContent: \"space-between\",\n// }}\n// >\n// <Button\n// style={buttonStyle}\n// onClick={() => {\n// if (tabPanes.length > 0) {\n// const prevTabPos =\n// (currTabPos - 1 + tabPanes.length) % tabPanes.length;\n// studioOps.updateProps({ activeKey: tabPanes[prevTabPos] });\n// }\n// }}\n// >\n// Prev tab\n// </Button>\n// <Button\n// style={buttonStyle}\n// onClick={() => {\n// if (tabPanes.length > 0) {\n// const nextTabPos = (currTabPos + 1) % tabPanes.length;\n// studioOps.updateProps({ activeKey: tabPanes[nextTabPos] });\n// }\n// }}\n// >\n// Next tab\n// </Button>\n// </div>\n// );\n// }\n\nfunction OutlineMessage() {\n return <div>* To re-arrange tab panes, use the Outline panel</div>;\n}\n\nfunction getActiveKeyOptions(props: TabsProps) {\n const options = new Set<string>();\n traverseReactEltTree(getTabItems(props.items), (elt) => {\n if (elt?.type === AntdTabItem && typeof elt?.key === \"string\") {\n options.add(elt.key);\n }\n });\n return Array.from(options.keys());\n}\n\nexport function registerTabs(loader?: Registerable) {\n registerComponentHelper(loader, AntdTabs, {\n name: tabsComponentName,\n displayName: \"Tabs\",\n defaultStyles: {\n width: \"stretch\",\n overflow: \"scroll\",\n },\n props: {\n activeKey: {\n editOnly: true,\n displayName: \"Active tab key\",\n uncontrolledProp: \"defaultActiveKey\",\n type: \"choice\",\n description: `Initial active tab's key`,\n options: getActiveKeyOptions,\n },\n animated: {\n type: \"boolean\",\n defaultValue: true,\n description: \"Change tabs with animation\",\n },\n animateTabBar: {\n type: \"boolean\",\n defaultValue: true,\n description: \"Animate the tab bar when switching tabs\",\n hidden: (ps) => !ps.animated,\n },\n animateTabContent: {\n type: \"boolean\",\n defaultValue: false,\n description: \"Fade-in tab content when switching tabs\",\n hidden: (ps) => !ps.animated,\n },\n centered: {\n type: \"boolean\",\n description: \"Center-align the tab bar\",\n },\n type: {\n type: \"choice\",\n defaultValueHint: \"line\",\n options: [\"line\", \"card\"],\n description: \"Basic style of tabs\",\n },\n items: {\n type: \"slot\",\n hidePlaceholder: true,\n allowedComponents: [tabItemComponentName],\n ...({ mergeWithParent: true } as any), // to make the tab items selectable from the components outline pane in Plasmic Studio.\n defaultValue: [\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: \"1\",\n label: {\n type: \"text\",\n value: \"First Item\",\n },\n children: {\n type: \"text\",\n value: \"First Children\",\n },\n },\n },\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: \"2\",\n label: {\n type: \"text\",\n value: \"Second Item\",\n },\n children: {\n type: \"text\",\n value: \"Second Children\",\n },\n },\n },\n ],\n },\n size: {\n type: \"choice\",\n defaultValueHint: \"middle\",\n options: [\"large\", \"middle\", \"small\"],\n description: \"Preset tab bar size\",\n },\n tabBarExtraContentLeft: {\n type: \"slot\",\n displayName: \"Extra content on left side\",\n hidePlaceholder: true,\n },\n tabBarExtraContentRight: {\n type: \"slot\",\n displayName: \"Extra content on right side\",\n hidePlaceholder: true,\n },\n tabBarGutter: {\n type: \"number\",\n displayName: \"Tab gap\",\n description: \"Gap (in pixels) between tabs\",\n advanced: true,\n },\n tabPosition: {\n type: \"choice\",\n defaultValueHint: \"top\",\n options: [\"top\", \"right\", \"bottom\", \"left\"],\n description: \"Position of tabs\",\n },\n destroyInactiveTabPane: {\n type: \"boolean\",\n description: `Destroy/Unmount inactive tab pane when changing tab`,\n advanced: true,\n },\n sticky: {\n type: \"boolean\",\n advanced: true,\n description: \"Stick tab bar to the top of the page when scrolling.\",\n defaultValue: false,\n hidden: (ps) => ps.tabPosition !== \"top\",\n },\n stickyOffset: {\n type: \"number\",\n advanced: true,\n description:\n \"Distance (in pixels) between the sticky tab bar and the top of the page as you scroll.\",\n hidden: (ps) => ps.tabPosition !== \"top\" || !ps.sticky,\n },\n tabBarBackground: {\n type: \"color\",\n advanced: true,\n defaultValue: \"#FFF\",\n hidden: (ps) => ps.tabPosition !== \"top\" || !ps.sticky,\n },\n tabsScopeClassName: {\n type: \"styleScopeClass\",\n scopeName: \"tabs\",\n } as any,\n tabBarClassName: {\n type: \"class\",\n displayName: \"Tab bar\",\n selectors: [\n {\n selector: \":tabs.ant-tabs .ant-tabs-nav\",\n label: \"Base\",\n },\n ],\n },\n tabsDropdownScopeClassName: {\n type: \"styleScopeClass\",\n scopeName: \"tabsDropdown\",\n } as any,\n tabsDropdownClassName: {\n type: \"class\",\n displayName: \"Overflow tabs menu\",\n selectors: [\n {\n selector: \":tabsDropdown.ant-tabs-dropdown .ant-tabs-dropdown-menu\",\n label: \"Base\",\n },\n ],\n },\n onChange: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [{ name: \"activeKey\", type: \"string\" }],\n },\n onTabClick: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n { name: \"tabKey\", type: \"string\" },\n { name: \"mouseEvent\", type: \"object\" },\n ],\n },\n onTabScroll: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [{ name: \"scrollInfo\", type: \"object\" }],\n },\n },\n states: {\n activeKey: {\n type: \"writable\",\n valueProp: \"activeKey\",\n onChangeProp: \"onChange\",\n variableType: \"text\",\n },\n },\n actions: [\n // {\n // type: \"custom-action\",\n // control: NavigateTabs,\n // },\n {\n type: \"button-action\",\n label: \"Add new tab\",\n onClick: ({ componentProps, studioOps }: ActionProps<any>) => {\n // Get the first positive integer that isn't already a key\n const generateNewKey = () => {\n const keysSet = new Set<string>();\n traverseReactEltTree(getTabItems(componentProps.items), (elt) => {\n if (elt?.type === AntdTabItem && typeof elt?.key === \"string\") {\n keysSet.add(elt.key);\n }\n });\n\n for (\n let keyCandidate = 1;\n keyCandidate <= keysSet.size + 1;\n keyCandidate++\n ) {\n const strKey = keyCandidate.toString();\n if (!keysSet.has(strKey)) {\n return strKey;\n }\n }\n\n return undefined;\n };\n\n const tabKey = generateNewKey();\n studioOps.appendToSlot(\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: tabKey,\n label: {\n type: \"text\",\n value: `Tab Label ${tabKey}`,\n },\n children: {\n type: \"text\",\n value: `Tab Children ${tabKey}`,\n },\n },\n },\n \"items\"\n );\n studioOps.updateProps({ activeKey: tabKey });\n },\n },\n {\n type: \"button-action\",\n label: \"Delete current tab\",\n onClick: ({ componentProps, studioOps }: ActionProps<any>) => {\n if (componentProps.activeKey) {\n const tabPanes: string[] = [];\n traverseReactEltTree(getTabItems(componentProps.items), (elt) => {\n if (elt?.type === AntdTabItem && typeof elt?.key === \"string\") {\n tabPanes.push(elt!.key!);\n }\n });\n const activeKey = componentProps.activeKey;\n const currTabPos = tabPanes.findIndex((tabKey) => {\n return tabKey === activeKey;\n });\n\n if (currTabPos !== -1) {\n studioOps.removeFromSlotAt(currTabPos, \"items\");\n if (tabPanes.length - 1 > 0) {\n const prevTabPos =\n (currTabPos - 1 + tabPanes.length) % tabPanes.length;\n studioOps.updateProps({ activeKey: tabPanes[prevTabPos] });\n }\n }\n }\n },\n },\n {\n type: \"custom-action\",\n control: OutlineMessage,\n },\n ],\n importPath: \"@plasmicpkgs/antd5/skinny/registerTabs\",\n importName: \"AntdTabs\",\n });\n\n registerComponentHelper(loader, AntdTabItem, {\n name: tabItemComponentName,\n displayName: \"Tab Item\",\n props: {\n disabled: {\n type: \"boolean\",\n description: \"Disable this tab\",\n },\n forceRender: {\n type: \"boolean\",\n description: `Force render of content in the tab, not lazy render after clicking on the tab`,\n advanced: true,\n },\n key: {\n type: \"string\",\n description: `Unique identifier for this tab`,\n displayName: \"Tab key\",\n },\n label: {\n type: \"slot\",\n displayName: \"Tab title\",\n defaultValue: \"Tab\",\n },\n children: {\n type: \"slot\",\n hidePlaceholder: true,\n },\n },\n importPath: \"@plasmicpkgs/antd5/skinny/registerTabs\",\n importName: \"AntdTabItem\",\n parentComponentName: tabsComponentName,\n });\n}\n"],"names":["props"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registerTabs.esm.js","sources":["../src/registerTabs.tsx"],"sourcesContent":["import { ActionProps } from \"@plasmicapp/host/registerComponent\";\nimport { Tabs } from \"antd\";\nimport React, { ReactElement, useMemo } from \"react\";\nimport {\n Registerable,\n registerComponentHelper,\n traverseReactEltTree,\n} from \"./utils\";\n\nexport const tabsComponentName = \"plasmic-antd5-tabs\";\nexport const tabItemComponentName = \"plasmic-antd5-tab-item\";\n\ntype TabItemType = NonNullable<\n React.ComponentProps<typeof Tabs>[\"items\"]\n>[number];\n\nexport const AntdTabItem: React.FC<TabItemType> = ({ children }) => {\n return <div>{children}</div>;\n};\n\nfunction getTabItems(items: ReactElement): React.ReactElement<TabItemType>[] {\n return (items?.type as any)?.name == AntdTabItem.name\n ? [items]\n : items?.props.children;\n}\n\nfunction getTabItemKeys(items: ReactElement): string[] {\n const keys: string[] = [];\n traverseReactEltTree(items, (elt) => {\n if (\n (elt?.type as any)?.name === AntdTabItem.name &&\n typeof elt?.key === \"string\"\n ) {\n keys.push(`${elt.key}`);\n }\n });\n return keys;\n}\n\ntype TabsProps = Omit<\n React.ComponentProps<typeof Tabs>,\n \"items\" | \"animated\" | \"tabBarExtraContent\" | \"renderTabBar\"\n> & {\n items: ReactElement;\n animated: boolean;\n animateTabBar: boolean;\n animateTabContent: boolean;\n tabBarExtraContentLeft: React.ReactNode;\n tabBarExtraContentRight: React.ReactNode;\n sticky: boolean;\n stickyOffset: number;\n tabBarBackground: string;\n tabsScopeClassName?: string;\n tabsDropdownScopeClassName?: string;\n};\n\nexport function AntdTabs(props: TabsProps) {\n const {\n items: itemsRaw,\n animated,\n animateTabBar,\n animateTabContent,\n tabBarExtraContentLeft,\n tabBarExtraContentRight,\n sticky,\n stickyOffset,\n tabBarBackground,\n className,\n tabPosition,\n tabsScopeClassName,\n tabsDropdownScopeClassName,\n ...rest\n } = props;\n const animationProp: React.ComponentProps<typeof Tabs>[\"animated\"] = useMemo(\n () =>\n animated\n ? {\n inkBar: animateTabBar,\n tabPane: animateTabContent,\n }\n : false,\n [animateTabBar, animateTabContent, animated]\n );\n const items: TabItemType[] = useMemo(() => {\n if (!React.isValidElement(itemsRaw)) return [];\n const tabItems = getTabItems(itemsRaw);\n return tabItems\n .map((currentItem) => {\n return {\n ...currentItem.props,\n key: currentItem.key,\n children: <>{currentItem.props.children}</>,\n };\n })\n .filter((i) => i != null) as TabItemType[];\n }, [itemsRaw]);\n\n return (\n <Tabs\n className={`${className} ${tabsScopeClassName}`}\n popupClassName={tabsDropdownScopeClassName}\n tabBarExtraContent={{\n left: <>{tabBarExtraContentLeft}</>,\n right: <>{tabBarExtraContentRight}</>,\n }}\n tabPosition={tabPosition}\n /**\n * CAUTION: sticky tab-bars are only supported for tabPosition top.\n * In component metadata, I have specified that sticky prop is hidden when tabPosition !== \"top\".\n * however, and that's where the caution is, that does not mean that any previously set value of sticky is destroyed. It stays there, but just the prop is hidden from the Settings side menu in Plasmic Studio.\n *\n * Which is why I have to also check the tabPosition here. And that's redundant.\n */\n renderTabBar={\n sticky && tabPosition === \"top\"\n ? (tabBarProps, DefaultTabBar) => (\n <div\n style={{\n zIndex: 1,\n position: \"sticky\",\n top: stickyOffset || 0,\n }}\n >\n <DefaultTabBar\n {...tabBarProps}\n style={{ backgroundColor: tabBarBackground }}\n />\n </div>\n )\n : undefined\n }\n animated={animationProp}\n items={items}\n {...rest}\n />\n );\n}\n\n// function NavigateTabs({ componentProps, studioOps }: ActionProps<any>) {\n// const tabPanes: string[] = getTabItemKeys(componentProps.items);\n// const buttonStyle = {\n// width: \"100%\",\n// borderColor: \"#f3f3f2\",\n// borderRadius: 6,\n// fontSize: 12,\n// };\n// const activeKey = componentProps.activeKey;\n// const currTabPos = activeKey\n// ? tabPanes.findIndex((tabKey) => {\n// return tabKey === activeKey;\n// })\n// : 0;\n\n// return (\n// <div\n// style={{\n// width: \"100%\",\n// display: \"flex\",\n// flexDirection: \"row\",\n// gap: \"4px\",\n// justifyContent: \"space-between\",\n// }}\n// >\n// <Button\n// style={buttonStyle}\n// onClick={() => {\n// if (tabPanes.length > 0) {\n// const prevTabPos =\n// (currTabPos - 1 + tabPanes.length) % tabPanes.length;\n// studioOps.updateProps({ activeKey: tabPanes[prevTabPos] });\n// }\n// }}\n// >\n// Prev tab\n// </Button>\n// <Button\n// style={buttonStyle}\n// onClick={() => {\n// if (tabPanes.length > 0) {\n// const nextTabPos = (currTabPos + 1) % tabPanes.length;\n// studioOps.updateProps({ activeKey: tabPanes[nextTabPos] });\n// }\n// }}\n// >\n// Next tab\n// </Button>\n// </div>\n// );\n// }\n\nfunction OutlineMessage() {\n return <div>* To re-arrange tab panes, use the Outline panel</div>;\n}\n\nexport function registerTabs(loader?: Registerable) {\n registerComponentHelper(loader, AntdTabs, {\n name: tabsComponentName,\n displayName: \"Tabs\",\n defaultStyles: {\n width: \"stretch\",\n overflow: \"scroll\",\n },\n props: {\n activeKey: {\n editOnly: true,\n displayName: \"Active tab key\",\n uncontrolledProp: \"defaultActiveKey\",\n type: \"choice\",\n description: `Initial active tab's key`,\n options: (ps) => getTabItemKeys(ps.items),\n },\n animated: {\n type: \"boolean\",\n defaultValue: true,\n description: \"Change tabs with animation\",\n },\n animateTabBar: {\n type: \"boolean\",\n defaultValue: true,\n description: \"Animate the tab bar when switching tabs\",\n hidden: (ps) => !ps.animated,\n },\n animateTabContent: {\n type: \"boolean\",\n defaultValue: false,\n description: \"Fade-in tab content when switching tabs\",\n hidden: (ps) => !ps.animated,\n },\n centered: {\n type: \"boolean\",\n description: \"Center-align the tab bar\",\n },\n type: {\n type: \"choice\",\n defaultValueHint: \"line\",\n options: [\"line\", \"card\"],\n description: \"Basic style of tabs\",\n },\n items: {\n type: \"slot\",\n hidePlaceholder: true,\n allowedComponents: [tabItemComponentName],\n ...({ mergeWithParent: true } as any), // to make the tab items selectable from the components outline pane in Plasmic Studio.\n defaultValue: [\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: \"1\",\n label: {\n type: \"text\",\n value: \"First Item\",\n },\n children: {\n type: \"text\",\n value: \"First Children\",\n },\n },\n },\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: \"2\",\n label: {\n type: \"text\",\n value: \"Second Item\",\n },\n children: {\n type: \"text\",\n value: \"Second Children\",\n },\n },\n },\n ],\n },\n size: {\n type: \"choice\",\n defaultValueHint: \"middle\",\n options: [\"large\", \"middle\", \"small\"],\n description: \"Preset tab bar size\",\n },\n tabBarExtraContentLeft: {\n type: \"slot\",\n displayName: \"Extra content on left side\",\n hidePlaceholder: true,\n },\n tabBarExtraContentRight: {\n type: \"slot\",\n displayName: \"Extra content on right side\",\n hidePlaceholder: true,\n },\n tabBarGutter: {\n type: \"number\",\n displayName: \"Tab gap\",\n description: \"Gap (in pixels) between tabs\",\n advanced: true,\n },\n tabPosition: {\n type: \"choice\",\n defaultValueHint: \"top\",\n options: [\"top\", \"right\", \"bottom\", \"left\"],\n description: \"Position of tabs\",\n },\n destroyInactiveTabPane: {\n type: \"boolean\",\n description: `Destroy/Unmount inactive tab pane when changing tab`,\n advanced: true,\n },\n sticky: {\n type: \"boolean\",\n advanced: true,\n description: \"Stick tab bar to the top of the page when scrolling.\",\n defaultValue: false,\n hidden: (ps) => ps.tabPosition !== \"top\",\n },\n stickyOffset: {\n type: \"number\",\n advanced: true,\n description:\n \"Distance (in pixels) between the sticky tab bar and the top of the page as you scroll.\",\n hidden: (ps) => ps.tabPosition !== \"top\" || !ps.sticky,\n },\n tabBarBackground: {\n type: \"color\",\n advanced: true,\n defaultValue: \"#FFF\",\n hidden: (ps) => ps.tabPosition !== \"top\" || !ps.sticky,\n },\n tabsScopeClassName: {\n type: \"styleScopeClass\",\n scopeName: \"tabs\",\n } as any,\n tabBarClassName: {\n type: \"class\",\n displayName: \"Tab bar\",\n selectors: [\n {\n selector: \":tabs.ant-tabs .ant-tabs-nav\",\n label: \"Base\",\n },\n ],\n },\n tabsDropdownScopeClassName: {\n type: \"styleScopeClass\",\n scopeName: \"tabsDropdown\",\n } as any,\n tabsDropdownClassName: {\n type: \"class\",\n displayName: \"Overflow tabs menu\",\n selectors: [\n {\n selector: \":tabsDropdown.ant-tabs-dropdown .ant-tabs-dropdown-menu\",\n label: \"Base\",\n },\n ],\n },\n onChange: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [{ name: \"activeKey\", type: \"string\" }],\n },\n onTabClick: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n { name: \"tabKey\", type: \"string\" },\n { name: \"mouseEvent\", type: \"object\" },\n ],\n },\n onTabScroll: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [{ name: \"scrollInfo\", type: \"object\" }],\n },\n },\n states: {\n activeKey: {\n type: \"writable\",\n valueProp: \"activeKey\",\n onChangeProp: \"onChange\",\n variableType: \"text\",\n },\n },\n actions: [\n // {\n // type: \"custom-action\",\n // control: NavigateTabs,\n // },\n {\n type: \"button-action\",\n label: \"Add new tab\",\n onClick: ({ componentProps, studioOps }: ActionProps<any>) => {\n // Get the first positive integer that isn't already a key\n const generateNewKey = () => {\n const existingKeys = getTabItemKeys(componentProps.items);\n\n for (\n let keyCandidate = 1;\n keyCandidate <= existingKeys.length + 1;\n keyCandidate++\n ) {\n const strKey = keyCandidate.toString();\n const index = existingKeys.findIndex((k) => {\n return strKey === k;\n });\n if (index === -1) {\n return strKey;\n }\n }\n\n return undefined;\n };\n\n const tabKey = generateNewKey();\n studioOps.appendToSlot(\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: tabKey,\n label: {\n type: \"text\",\n value: `Tab Label ${tabKey}`,\n },\n children: {\n type: \"text\",\n value: `Tab Children ${tabKey}`,\n },\n },\n },\n \"items\"\n );\n studioOps.updateProps({ activeKey: tabKey });\n },\n },\n {\n type: \"button-action\",\n label: \"Delete current tab\",\n onClick: ({ componentProps, studioOps }: ActionProps<any>) => {\n if (componentProps.activeKey) {\n const tabPanes = getTabItemKeys(componentProps.items);\n const activeKey = componentProps.activeKey;\n const currTabPos = tabPanes.findIndex((tabKey) => {\n return tabKey === activeKey;\n });\n\n if (currTabPos !== -1) {\n studioOps.removeFromSlotAt(currTabPos, \"items\");\n if (tabPanes.length - 1 > 0) {\n const prevTabPos =\n (currTabPos - 1 + tabPanes.length) % tabPanes.length;\n studioOps.updateProps({ activeKey: tabPanes[prevTabPos] });\n }\n }\n }\n },\n },\n {\n type: \"custom-action\",\n control: OutlineMessage,\n },\n ],\n importPath: \"@plasmicpkgs/antd5/skinny/registerTabs\",\n importName: \"AntdTabs\",\n });\n\n registerComponentHelper(loader, AntdTabItem, {\n name: tabItemComponentName,\n displayName: \"Tab Item\",\n props: {\n disabled: {\n type: \"boolean\",\n description: \"Disable this tab\",\n },\n forceRender: {\n type: \"boolean\",\n description: `Force render of content in the tab, not lazy render after clicking on the tab`,\n advanced: true,\n },\n key: {\n type: \"string\",\n description: `Unique identifier for this tab`,\n displayName: \"Tab key\",\n },\n label: {\n type: \"slot\",\n displayName: \"Tab title\",\n defaultValue: \"Tab\",\n },\n children: {\n type: \"slot\",\n hidePlaceholder: true,\n },\n },\n importPath: \"@plasmicpkgs/antd5/skinny/registerTabs\",\n importName: \"AntdTabItem\",\n parentComponentName: tabsComponentName,\n });\n}\n"],"names":[],"mappings":"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"}
|