@ayasofyazilim/ui 0.0.4 → 0.0.6
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/components/accordion.js +1 -1
- package/dist/components/accordion.js.map +1 -1
- package/dist/components/alert-dialog.js +2 -2
- package/dist/components/alert-dialog.js.map +1 -1
- package/dist/components/alert.js +1 -1
- package/dist/components/alert.js.map +1 -1
- package/dist/components/avatar.js +1 -1
- package/dist/components/avatar.js.map +1 -1
- package/dist/components/badge.js +1 -1
- package/dist/components/badge.js.map +1 -1
- package/dist/components/breadcrumb.js +1 -1
- package/dist/components/breadcrumb.js.map +1 -1
- package/dist/components/button-group.js +2 -2
- package/dist/components/button-group.js.map +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/button.js.map +1 -1
- package/dist/components/calendar.js +2 -5
- package/dist/components/calendar.js.map +1 -1
- package/dist/components/card.js +1 -1
- package/dist/components/card.js.map +1 -1
- package/dist/components/carousel.js +2 -2
- package/dist/components/carousel.js.map +1 -1
- package/dist/components/chart.js +1 -1
- package/dist/components/chart.js.map +1 -1
- package/dist/components/checkbox.js +1 -1
- package/dist/components/checkbox.js.map +1 -1
- package/dist/components/command.js +2 -2
- package/dist/components/command.js.map +1 -1
- package/dist/components/context-menu.js +1 -1
- package/dist/components/context-menu.js.map +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/drawer.js +1 -1
- package/dist/components/drawer.js.map +1 -1
- package/dist/components/dropdown-menu.js +1 -1
- package/dist/components/dropdown-menu.js.map +1 -1
- package/dist/components/field.js +3 -3
- package/dist/components/field.js.map +1 -1
- package/dist/components/form.js +2 -2
- package/dist/components/form.js.map +1 -1
- package/dist/components/hover-card.js +1 -1
- package/dist/components/hover-card.js.map +1 -1
- package/dist/components/input-group.js +4 -4
- package/dist/components/input-group.js.map +1 -1
- package/dist/components/input-otp.js +1 -1
- package/dist/components/input-otp.js.map +1 -1
- package/dist/components/input.js +1 -1
- package/dist/components/input.js.map +1 -1
- package/dist/components/item.js +2 -2
- package/dist/components/item.js.map +1 -1
- package/dist/components/kbd.js +1 -1
- package/dist/components/kbd.js.map +1 -1
- package/dist/components/label.js +1 -1
- package/dist/components/label.js.map +1 -1
- package/dist/components/menubar.js +1 -1
- package/dist/components/menubar.js.map +1 -1
- package/dist/components/navigation-menu.js +1 -1
- package/dist/components/navigation-menu.js.map +1 -1
- package/dist/components/pagination.js +2 -4
- package/dist/components/pagination.js.map +1 -1
- package/dist/components/progress.js +1 -1
- package/dist/components/progress.js.map +1 -1
- package/dist/components/radio-group.js +1 -1
- package/dist/components/radio-group.js.map +1 -1
- package/dist/components/resizable.js +1 -1
- package/dist/components/resizable.js.map +1 -1
- package/dist/components/scroll-area.js +1 -1
- package/dist/components/scroll-area.js.map +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/select.js.map +1 -1
- package/dist/components/separator.js +1 -1
- package/dist/components/separator.js.map +1 -1
- package/dist/components/sheet.js +1 -1
- package/dist/components/sheet.js.map +1 -1
- package/dist/components/skeleton.js +1 -1
- package/dist/components/skeleton.js.map +1 -1
- package/dist/components/slider.js +1 -1
- package/dist/components/slider.js.map +1 -1
- package/dist/components/spinner.js +1 -1
- package/dist/components/spinner.js.map +1 -1
- package/dist/components/stepper.js +1 -1
- package/dist/components/stepper.js.map +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/switch.js.map +1 -1
- package/dist/components/table.js +1 -1
- package/dist/components/table.js.map +1 -1
- package/dist/components/tabs.js +1 -1
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/textarea.js +1 -1
- package/dist/components/textarea.js.map +1 -1
- package/dist/components/toggle-group.js +2 -2
- package/dist/components/toggle-group.js.map +1 -1
- package/dist/components/toggle.js +1 -1
- package/dist/components/toggle.js.map +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/components/tooltip.js.map +1 -1
- package/dist/custom/action-button.js +2 -4
- package/dist/custom/action-button.js.map +1 -1
- package/dist/custom/async-select.js +7 -7
- package/dist/custom/async-select.js.map +1 -1
- package/dist/custom/awesome-not-found.js +3 -3
- package/dist/custom/awesome-not-found.js.map +1 -1
- package/dist/custom/charts/area-chart.js +2 -2
- package/dist/custom/charts/area-chart.js.map +1 -1
- package/dist/custom/charts/bar-chart.js +2 -2
- package/dist/custom/charts/bar-chart.js.map +1 -1
- package/dist/custom/charts/chart-card.js +3 -3
- package/dist/custom/charts/chart-card.js.map +1 -1
- package/dist/custom/charts/pie-chart.js +2 -2
- package/dist/custom/charts/pie-chart.js.map +1 -1
- package/dist/custom/charts/radar-chart.js +2 -2
- package/dist/custom/charts/radar-chart.js.map +1 -1
- package/dist/custom/combobox.js +8 -8
- package/dist/custom/combobox.js.map +1 -1
- package/dist/custom/confirm-dialog.js +3 -3
- package/dist/custom/confirm-dialog.js.map +1 -1
- package/dist/custom/country-selector.js +6 -6
- package/dist/custom/country-selector.js.map +1 -1
- package/dist/custom/date-picker/calendar-rac.js +1 -1
- package/dist/custom/date-picker/calendar-rac.js.map +1 -1
- package/dist/custom/date-picker/datefield-rac.js +1 -1
- package/dist/custom/date-picker/datefield-rac.js.map +1 -1
- package/dist/custom/date-picker/index.js +3 -3
- package/dist/custom/date-picker/index.js.map +1 -1
- package/dist/custom/date-picker-old.js +4 -4
- package/dist/custom/date-picker-old.js.map +1 -1
- package/dist/custom/date-tooltip.js +1 -1
- package/dist/custom/date-tooltip.js.map +1 -1
- package/dist/custom/document-scanner/corner-adjustment/action-buttons.js +1 -1
- package/dist/custom/document-scanner/corner-adjustment/action-buttons.js.map +1 -1
- package/dist/custom/document-scanner/corner-adjustment/corner-handle.js +1 -1
- package/dist/custom/document-scanner/corner-adjustment/corner-handle.js.map +1 -1
- package/dist/custom/document-scanner/index.js +2 -2
- package/dist/custom/document-scanner/index.js.map +1 -1
- package/dist/custom/document-viewer/controllers.js +3 -3
- package/dist/custom/document-viewer/controllers.js.map +1 -1
- package/dist/custom/document-viewer/index.js +1 -1
- package/dist/custom/document-viewer/index.js.map +1 -1
- package/dist/custom/document-viewer/renderers/pdf.js +1 -1
- package/dist/custom/document-viewer/renderers/pdf.js.map +1 -1
- package/dist/custom/email-input/email.js +4 -4
- package/dist/custom/email-input/email.js.map +1 -1
- package/dist/custom/file-uploader.js +6 -6
- package/dist/custom/file-uploader.js.map +1 -1
- package/dist/custom/filter-component/fields/async-select.js +1 -1
- package/dist/custom/filter-component/fields/async-select.js.map +1 -1
- package/dist/custom/filter-component/fields/date.js +3 -3
- package/dist/custom/filter-component/fields/date.js.map +1 -1
- package/dist/custom/filter-component/fields/multi-select.js +1 -1
- package/dist/custom/filter-component/fields/multi-select.js.map +1 -1
- package/dist/custom/filter-component/index.js +4 -4
- package/dist/custom/filter-component/index.js.map +1 -1
- package/dist/custom/image-canvas.js +1 -1
- package/dist/custom/image-canvas.js.map +1 -1
- package/dist/custom/master-data-grid/components/filters/client-filter.js +2 -2
- package/dist/custom/master-data-grid/components/filters/client-filter.js.map +1 -1
- package/dist/custom/master-data-grid/components/filters/multi-filter-dialog.js +2 -2
- package/dist/custom/master-data-grid/components/filters/multi-filter-dialog.js.map +1 -1
- package/dist/custom/master-data-grid/components/filters/server-filter.js +5 -5
- package/dist/custom/master-data-grid/components/filters/server-filter.js.map +1 -1
- package/dist/custom/master-data-grid/components/table/cell-renderer.js +1 -1
- package/dist/custom/master-data-grid/components/table/cell-renderer.js.map +1 -1
- package/dist/custom/master-data-grid/hooks/use-columns.js +1 -1
- package/dist/custom/master-data-grid/hooks/use-columns.js.map +1 -1
- package/dist/custom/multi-select.js +6 -6
- package/dist/custom/multi-select.js.map +1 -1
- package/dist/custom/password-input.js +1 -1
- package/dist/custom/password-input.js.map +1 -1
- package/dist/custom/phone-input.js +2 -2
- package/dist/custom/phone-input.js.map +1 -1
- package/dist/custom/schema-form/custom/label.js +3 -3
- package/dist/custom/schema-form/custom/label.js.map +1 -1
- package/dist/custom/schema-form/fields/base-input-field.js +2 -2
- package/dist/custom/schema-form/fields/base-input-field.js.map +1 -1
- package/dist/custom/schema-form/fields/field.js +2 -2
- package/dist/custom/schema-form/fields/field.js.map +1 -1
- package/dist/custom/schema-form/fields/table-array/array-field-item.js +5 -5
- package/dist/custom/schema-form/fields/table-array/array-field-item.js.map +1 -1
- package/dist/custom/schema-form/fields/table-array/array-field-template.js +3 -3
- package/dist/custom/schema-form/fields/table-array/array-field-template.js.map +1 -1
- package/dist/custom/schema-form/index.js +1 -1
- package/dist/custom/schema-form/index.js.map +1 -1
- package/dist/custom/schema-form/templates/description.js +1 -1
- package/dist/custom/schema-form/templates/description.js.map +1 -1
- package/dist/custom/schema-form/templates/submit.js +2 -2
- package/dist/custom/schema-form/templates/submit.js.map +1 -1
- package/dist/custom/schema-form/utils/schemas.js +1 -1
- package/dist/custom/schema-form/utils/schemas.js.map +1 -1
- package/dist/custom/schema-form/widgets/boolean.js +4 -4
- package/dist/custom/schema-form/widgets/boolean.js.map +1 -1
- package/dist/custom/schema-form/widgets/combobox.js +7 -7
- package/dist/custom/schema-form/widgets/combobox.js.map +1 -1
- package/dist/custom/schema-form/widgets/date.js +1 -1
- package/dist/custom/schema-form/widgets/date.js.map +1 -1
- package/dist/custom/schema-form/widgets/email.js +2 -2
- package/dist/custom/schema-form/widgets/email.js.map +1 -1
- package/dist/custom/schema-form/widgets/password.js +1 -1
- package/dist/custom/schema-form/widgets/password.js.map +1 -1
- package/dist/custom/schema-form/widgets/phone.js +1 -1
- package/dist/custom/schema-form/widgets/phone.js.map +1 -1
- package/dist/custom/schema-form/widgets/select.js +3 -3
- package/dist/custom/schema-form/widgets/select.js.map +1 -1
- package/dist/custom/schema-form/widgets/selectable.js +1 -1
- package/dist/custom/schema-form/widgets/selectable.js.map +1 -1
- package/dist/custom/schema-form/widgets/string-array.js +3 -3
- package/dist/custom/schema-form/widgets/string-array.js.map +1 -1
- package/dist/custom/schema-form/widgets/url.js +2 -2
- package/dist/custom/schema-form/widgets/url.js.map +1 -1
- package/dist/custom/section-layout-v2.js +3 -3
- package/dist/custom/section-layout-v2.js.map +1 -1
- package/dist/custom/select-tabs.js +2 -2
- package/dist/custom/select-tabs.js.map +1 -1
- package/dist/custom/stepper.js +2 -2
- package/dist/custom/stepper.js.map +1 -1
- package/dist/custom/tab-layout.js +2 -2
- package/dist/custom/tab-layout.js.map +1 -1
- package/dist/custom/tanstack-table/fields/tanstack-table-column-header.js +3 -3
- package/dist/custom/tanstack-table/fields/tanstack-table-column-header.js.map +1 -1
- package/dist/custom/tanstack-table/fields/tanstack-table-filter-date.js +4 -4
- package/dist/custom/tanstack-table/fields/tanstack-table-filter-date.js.map +1 -1
- package/dist/custom/tanstack-table/fields/tanstack-table-filter-faceted.js +6 -6
- package/dist/custom/tanstack-table/fields/tanstack-table-filter-faceted.js.map +1 -1
- package/dist/custom/tanstack-table/fields/tanstack-table-filter-text.js +5 -8
- package/dist/custom/tanstack-table/fields/tanstack-table-filter-text.js.map +1 -1
- package/dist/custom/tanstack-table/fields/tanstack-table-pagination.js +2 -2
- package/dist/custom/tanstack-table/fields/tanstack-table-pagination.js.map +1 -1
- package/dist/custom/tanstack-table/fields/tanstack-table-plain-table.js +2 -2
- package/dist/custom/tanstack-table/fields/tanstack-table-plain-table.js.map +1 -1
- package/dist/custom/tanstack-table/fields/tanstack-table-row-actions-confirmation.js +2 -2
- package/dist/custom/tanstack-table/fields/tanstack-table-row-actions-confirmation.js.map +1 -1
- package/dist/custom/tanstack-table/fields/tanstack-table-row-actions-custom-dialog.js +2 -2
- package/dist/custom/tanstack-table/fields/tanstack-table-row-actions-custom-dialog.js.map +1 -1
- package/dist/custom/tanstack-table/fields/tanstack-table-row-actions.js +3 -3
- package/dist/custom/tanstack-table/fields/tanstack-table-row-actions.js.map +1 -1
- package/dist/custom/tanstack-table/fields/tanstack-table-table-actions-custom-dialog.js +3 -3
- package/dist/custom/tanstack-table/fields/tanstack-table-table-actions-custom-dialog.js.map +1 -1
- package/dist/custom/tanstack-table/fields/tanstack-table-table-actions-schemaform-dialog.js +2 -2
- package/dist/custom/tanstack-table/fields/tanstack-table-table-actions-schemaform-dialog.js.map +1 -1
- package/dist/custom/tanstack-table/fields/tanstack-table-toolbar.js +1 -1
- package/dist/custom/tanstack-table/fields/tanstack-table-toolbar.js.map +1 -1
- package/dist/custom/tanstack-table/fields/tanstack-table-view-options.js +2 -2
- package/dist/custom/tanstack-table/fields/tanstack-table-view-options.js.map +1 -1
- package/dist/custom/tanstack-table/utils/columns-by-row-data.js +3 -3
- package/dist/custom/tanstack-table/utils/columns-by-row-data.js.map +1 -1
- package/dist/custom/tanstack-table/utils/editable-columns-by-row-data.js +5 -5
- package/dist/custom/tanstack-table/utils/editable-columns-by-row-data.js.map +1 -1
- package/dist/custom/timeline.js +1 -1
- package/dist/custom/timeline.js.map +1 -1
- package/dist/custom/tree.js +1 -1
- package/dist/custom/tree.js.map +1 -1
- package/dist/custom/webcam.js +2 -2
- package/dist/custom/webcam.js.map +1 -1
- package/package.json +13 -84
|
@@ -7,9 +7,9 @@ import {
|
|
|
7
7
|
useMemo,
|
|
8
8
|
useState
|
|
9
9
|
} from "react";
|
|
10
|
-
import { Button } from "@
|
|
11
|
-
import { Skeleton } from "@
|
|
12
|
-
import { cn } from "@
|
|
10
|
+
import { Button } from "@ayasofyazilim/ui/components/button";
|
|
11
|
+
import { Skeleton } from "@ayasofyazilim/ui/components/skeleton";
|
|
12
|
+
import { cn } from "@ayasofyazilim/ui/lib/utils";
|
|
13
13
|
function SectionLayoutNavbar({
|
|
14
14
|
sections,
|
|
15
15
|
activeSectionId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/custom/section-layout-v2.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport React, {\r\n createContext,\r\n ElementType,\r\n useContext,\r\n useEffect,\r\n useMemo,\r\n useState,\r\n} from \"react\";\r\nimport { Button } from \"@
|
|
1
|
+
{"version":3,"sources":["../../src/custom/section-layout-v2.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport React, {\r\n createContext,\r\n ElementType,\r\n useContext,\r\n useEffect,\r\n useMemo,\r\n useState,\r\n} from \"react\";\r\nimport { Button } from \"@ayasofyazilim/ui/components/button\";\r\nimport { Skeleton } from \"@ayasofyazilim/ui/components/skeleton\";\r\nimport { cn } from \"@ayasofyazilim/ui/lib/utils\";\r\n\r\nexport interface ISection {\r\n children?: React.ReactNode;\r\n className?: string;\r\n disabled?: boolean;\r\n id: string;\r\n link?: string;\r\n name: string;\r\n}\r\n\r\nexport interface ISectionLayoutNavbarProps {\r\n activeSectionId: string;\r\n linkElement?: ElementType;\r\n onSectionChange?: (sectionId: string) => void;\r\n sections: Array<ISection>;\r\n vertical?: boolean;\r\n}\r\n\r\n/**\r\n * Renders a navigation bar for a section layout.\r\n *\r\n * @param {Array<ISection>} props.sections - The sections to be rendered in the navigation bar.\r\n * @param {string} props.activeSectionId - The ID of the active section.\r\n * @param {(sectionId: string) => void} [props.onSectionChange] - The function to be called when a section is clicked.\r\n * @param {React.ElementType} [props.linkElement] - The element to be used for the section links. (default: Button)\r\n * @param {boolean} [props.vertical] - Whether the navigation bar should be rendered vertically.\r\n * @return {React.ReactNode} The rendered navigation bar.\r\n */\r\nexport function SectionLayoutNavbar({\r\n sections,\r\n activeSectionId,\r\n onSectionChange,\r\n linkElement,\r\n vertical,\r\n}: ISectionLayoutNavbarProps) {\r\n const LinkElement = linkElement || Button;\r\n return (\r\n <nav\r\n className={cn(\r\n \"flex gap-4 text-sm text-center md:text-left p-3 \",\r\n vertical\r\n ? \"flex-col border-b md:border-b-0 md:border-r overflow-auto min-w-full md:min-w-60 items-center md:items-start\"\r\n : \"flex-col md:flex-row border-b\",\r\n )}\r\n >\r\n {sections.map((section) => (\r\n <LinkElement\r\n className={cn(\r\n activeSectionId === section.id\r\n ? \"font-semibold text-primary hover:no-underline m-0 p-0 h-auto justify-start\"\r\n : \"font-normal text-muted-foreground hover:no-underline m-0 p-0 h-auto justify-start\",\r\n section.disabled\r\n ? \"cursor-not-allowed opacity-50\"\r\n : \"cursor-pointer\",\r\n section.className,\r\n )}\r\n data-active={activeSectionId === section.id}\r\n href={section.link || \"#\"}\r\n onClick={() => {\r\n if (section.disabled) return;\r\n if (!linkElement && onSectionChange) {\r\n onSectionChange(section.id);\r\n }\r\n }}\r\n key={section.id}\r\n tabIndex={section.disabled ? -1 : 0}\r\n variant=\"link\"\r\n >\r\n {section.children && section.children}\r\n {!section.children && section.name}\r\n </LinkElement>\r\n ))}\r\n </nav>\r\n );\r\n}\r\n\r\nexport interface ISectionContentProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n sectionId: string;\r\n}\r\n/**\r\n * Renders the content of a section layout based on the active section ID. It must be inside of SectionLayout component.\r\n *\r\n * @param {string} sectionId - The ID of the section to render.\r\n * @param {React.ReactNode} children - The content to be rendered inside the section layout.\r\n * @param {string} className - Additional CSS classes for styling.\r\n * @return {JSX.Element | null} The rendered section layout content or null if the section is not active.\r\n */\r\nexport function SectionLayoutContent({\r\n sectionId,\r\n children,\r\n className,\r\n}: ISectionContentProps) {\r\n const context = useContext(SectionLayoutContext);\r\n const { activeSectionId } = context;\r\n if (activeSectionId !== sectionId) return null;\r\n\r\n return (\r\n <div\r\n id={`section-${sectionId}`}\r\n className={cn(\"w-full p-5 overflow-auto h-full flex-1\", className)}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nconst SectionLayoutContext = createContext({\r\n activeSectionId: \"\",\r\n});\r\nexport interface ISectionLayoutProps {\r\n children: React.ReactNode;\r\n defaultActiveSectionId?: string;\r\n linkElement?: ElementType;\r\n sections: Array<ISection>;\r\n vertical?: boolean;\r\n}\r\n\r\n/**\r\n * Renders a section layout component with a navigation bar and content area.\r\n *\r\n * @param {React.ReactNode} children - The content to be rendered inside the section layout.\r\n * @param {Array<ISection>} sections - The sections to be rendered in the navigation bar.\r\n * @param {string} [defaultActiveSectionId] - The ID of the section to be active by default.\r\n * @param {ElementType} [linkElement] - The element to be used for the section links. (default: Button)\r\n * @param {boolean} [vertical] - Whether the layout should be rendered vertically.\r\n * @return {JSX.Element} The rendered section layout component.\r\n */\r\nexport function SectionLayout({\r\n children,\r\n sections,\r\n defaultActiveSectionId,\r\n linkElement,\r\n vertical,\r\n}: ISectionLayoutProps) {\r\n const [activeSectionId, setActiveSectionId] = useState(\r\n defaultActiveSectionId || sections?.[0]?.id,\r\n );\r\n useEffect(() => {\r\n if (linkElement && defaultActiveSectionId) {\r\n setActiveSectionId(defaultActiveSectionId);\r\n }\r\n }, [defaultActiveSectionId]);\r\n const contextValue = useMemo(\r\n () => ({ activeSectionId: activeSectionId || \"\" }),\r\n [activeSectionId],\r\n );\r\n return (\r\n <SectionLayoutContext.Provider value={contextValue}>\r\n <div\r\n className={\r\n vertical\r\n ? \"flex flex-wrap md:flex-nowrap rounded-lg h-full overflow-hidden mb-5\"\r\n : \"rounded-lg h-full overflow-hidden flex flex-col\"\r\n }\r\n >\r\n <SectionLayoutNavbar\r\n sections={sections}\r\n activeSectionId={activeSectionId || \"\"}\r\n onSectionChange={setActiveSectionId}\r\n linkElement={linkElement}\r\n vertical={vertical}\r\n />\r\n {children}\r\n </div>\r\n </SectionLayoutContext.Provider>\r\n );\r\n}\r\n\r\nexport const SectionLayoutSkeleton = ({ vertical }: { vertical?: boolean }) => (\r\n <div\r\n className={\r\n vertical\r\n ? \"flex flex-wrap md:flex-nowrap rounded-lg h-full overflow-hidden\"\r\n : \"rounded-lg h-full overflow-hidden flex flex-col\"\r\n }\r\n >\r\n <nav\r\n className={cn(\r\n \"flex gap-4 text-sm text-center md:text-left p-5 \",\r\n vertical\r\n ? \"flex-col border-b md:border-b-0 md:border-r min-w-full md:min-w-60 items-center md:items-start\"\r\n : \"flex-col md:flex-row border-b\",\r\n )}\r\n >\r\n <Skeleton className=\"h-6 w-full bg-gray-200\" />\r\n <Skeleton className=\"h-6 w-full bg-gray-200\" />\r\n <Skeleton className=\"h-6 w-full bg-gray-200\" />\r\n <Skeleton className=\"h-6 w-full bg-gray-200\" />\r\n <Skeleton className=\"h-6 w-full bg-gray-200\" />\r\n </nav>\r\n <div className=\"w-full p-5 overflow-auto h-full flex-1\">\r\n <Skeleton className=\"h-40 w-full bg-gray-200 mb-2\" />\r\n <Skeleton className=\"h-40 w-full bg-gray-200 mb-2\" />\r\n <Skeleton className=\"h-40 w-full bg-gray-200 mb-2\" />\r\n </div>\r\n </div>\r\n);\r\n"],"mappings":"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","names":[]}
|
|
@@ -7,8 +7,8 @@ import {
|
|
|
7
7
|
useMemo,
|
|
8
8
|
useState
|
|
9
9
|
} from "react";
|
|
10
|
-
import { Button } from "@
|
|
11
|
-
import { cn } from "@
|
|
10
|
+
import { Button } from "@ayasofyazilim/ui/components/button";
|
|
11
|
+
import { cn } from "@ayasofyazilim/ui/lib/utils";
|
|
12
12
|
const variants = {
|
|
13
13
|
default: "flex flex-row justify-between border-2 border-gray-300 gap-5 text-gray-700/80 flex-1",
|
|
14
14
|
active: "flex flex-row justify-between border-2 border-primary/80 gap-5 text-primary/80 hover:text-primary flex-1"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/custom/select-tabs.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { Circle, CircleCheckBig } from \"lucide-react\";\r\nimport React, {\r\n createContext,\r\n JSX,\r\n useContext,\r\n useMemo,\r\n useState,\r\n} from \"react\";\r\nimport { Button } from \"@
|
|
1
|
+
{"version":3,"sources":["../../src/custom/select-tabs.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { Circle, CircleCheckBig } from \"lucide-react\";\r\nimport React, {\r\n createContext,\r\n JSX,\r\n useContext,\r\n useMemo,\r\n useState,\r\n} from \"react\";\r\nimport { Button } from \"@ayasofyazilim/ui/components/button\";\r\nimport { cn } from \"@ayasofyazilim/ui/lib/utils\";\r\n\r\nconst variants = {\r\n default:\r\n \"flex flex-row justify-between border-2 border-gray-300 gap-5 text-gray-700/80 flex-1\",\r\n active:\r\n \"flex flex-row justify-between border-2 border-primary/80 gap-5 text-primary/80 hover:text-primary flex-1\",\r\n};\r\n\r\ninterface ISelectTabsContentProps {\r\n children: JSX.Element | string;\r\n value: string;\r\n}\r\n/**\r\n * Renders the content of a select tab.\r\n *\r\n * @param {ISelectTabsContentProps} props - The properties for the select tab content.\r\n * @param {string} props.value - The value of the tab.\r\n * @param {JSX.Element | string} props.children - The content of the tab.\r\n * @return {JSX.Element} The rendered select tab content.\r\n */\r\nexport function SelectTabsContent({\r\n value,\r\n children,\r\n}: ISelectTabsContentProps) {\r\n const { activeTab, onChange } = useContext(SelectTabsContext);\r\n return (\r\n <Button\r\n key={value}\r\n className={activeTab === value ? variants.active : variants.default}\r\n variant=\"ghost\"\r\n onClick={() => onChange(value)}\r\n >\r\n {children}\r\n {activeTab === value ? (\r\n <CircleCheckBig size={16} />\r\n ) : (\r\n <Circle size={16} />\r\n )}\r\n </Button>\r\n );\r\n}\r\ninterface IContextProps {\r\n activeTab: string;\r\n onChange: (value: string) => void;\r\n}\r\nconst SelectTabsContext = createContext<IContextProps>({\r\n activeTab: \"\",\r\n onChange: () => {},\r\n});\r\ninterface ISelectTabsProps {\r\n children?: React.ReactNode;\r\n deselect?: boolean;\r\n disabled?: boolean;\r\n onValueChange?: (value: string) => void;\r\n value?: string;\r\n className?: string;\r\n}\r\n\r\n/**\r\n * Renders a set of selectable tabs.\r\n *\r\n * @param {ISelectTabsProps} props - The properties for the select tabs.\r\n * @param {boolean} props.deselect - Whether the tabs can have a null value.\r\n * @param {React.ReactNode} props.children - The content of the tabs.\r\n * @param {string } [props.value] - The initial active tab value.\r\n * @param {(newValue: string) => void} [props.onValueChange] - The callback function triggered when the active tab value changes.\r\n * @param {boolean} [props.disabled] - Whether the tabs are disabled.\r\n * @return {JSX.Element} The rendered select tabs.\r\n */\r\nexport default function SelectTabs({\r\n deselect,\r\n children,\r\n value = \"\",\r\n onValueChange,\r\n disabled,\r\n className,\r\n}: ISelectTabsProps) {\r\n const [activeTab, setActiveTab] = useState(value);\r\n const contextValue = useMemo(() => ({ activeTab, onChange }), [activeTab]);\r\n function onChange(newValue: string) {\r\n if (disabled) return;\r\n\r\n if (newValue === activeTab && deselect) {\r\n setActiveTab(\"\");\r\n onValueChange?.(\"\");\r\n } else if (newValue !== activeTab) {\r\n setActiveTab(newValue);\r\n onValueChange?.(newValue);\r\n }\r\n }\r\n\r\n return (\r\n <SelectTabsContext.Provider value={contextValue}>\r\n <div className={cn(\"w-full grid gap-3\", className)}>{children}</div>\r\n </SelectTabsContext.Provider>\r\n );\r\n}\r\n"],"mappings":";AAsCI,SAQI,KARJ;AApCJ,SAAS,QAAQ,sBAAsB;AACvC;AAAA,EACE;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,cAAc;AACvB,SAAS,UAAU;AAEnB,MAAM,WAAW;AAAA,EACf,SACE;AAAA,EACF,QACE;AACJ;AAcO,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AACF,GAA4B;AAC1B,QAAM,EAAE,WAAW,SAAS,IAAI,WAAW,iBAAiB;AAC5D,SACE;AAAA,IAAC;AAAA;AAAA,MAEC,WAAW,cAAc,QAAQ,SAAS,SAAS,SAAS;AAAA,MAC5D,SAAQ;AAAA,MACR,SAAS,MAAM,SAAS,KAAK;AAAA,MAE5B;AAAA;AAAA,QACA,cAAc,QACb,oBAAC,kBAAe,MAAM,IAAI,IAE1B,oBAAC,UAAO,MAAM,IAAI;AAAA;AAAA;AAAA,IATf;AAAA,EAWP;AAEJ;AAKA,MAAM,oBAAoB,cAA6B;AAAA,EACrD,WAAW;AAAA,EACX,UAAU,MAAM;AAAA,EAAC;AACnB,CAAC;AAqBc,SAAR,WAA4B;AAAA,EACjC;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AACF,GAAqB;AACnB,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,eAAe,QAAQ,OAAO,EAAE,WAAW,SAAS,IAAI,CAAC,SAAS,CAAC;AACzE,WAAS,SAAS,UAAkB;AAClC,QAAI,SAAU;AAEd,QAAI,aAAa,aAAa,UAAU;AACtC,mBAAa,EAAE;AACf,sBAAgB,EAAE;AAAA,IACpB,WAAW,aAAa,WAAW;AACjC,mBAAa,QAAQ;AACrB,sBAAgB,QAAQ;AAAA,IAC1B;AAAA,EACF;AAEA,SACE,oBAAC,kBAAkB,UAAlB,EAA2B,OAAO,cACjC,8BAAC,SAAI,WAAW,GAAG,qBAAqB,SAAS,GAAI,UAAS,GAChE;AAEJ;","names":[]}
|
package/dist/custom/stepper.js
CHANGED
|
@@ -6,8 +6,8 @@ import React, {
|
|
|
6
6
|
useContext,
|
|
7
7
|
useMemo
|
|
8
8
|
} from "react";
|
|
9
|
-
import { Button } from "@
|
|
10
|
-
import { cn } from "@
|
|
9
|
+
import { Button } from "@ayasofyazilim/ui/components/button";
|
|
10
|
+
import { cn } from "@ayasofyazilim/ui/lib/utils";
|
|
11
11
|
const Separator = ({ vertical }) => {
|
|
12
12
|
const containerClass = `border-muted items-center justify-center flex ${vertical ? "w-1" : "h-8 w-full"}`;
|
|
13
13
|
const innerClass = `bg-muted w-full ${vertical ? "h-16" : "h-1"}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/custom/stepper.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport React, {\r\n Children,\r\n Dispatch,\r\n SetStateAction,\r\n createContext,\r\n useContext,\r\n useMemo,\r\n} from \"react\";\r\nimport { Button } from \"@repo/ayasofyazilim-ui/components/button\";\r\nimport { cn } from \"@repo/ayasofyazilim-ui/lib/utils\";\r\n\r\nexport interface ISeparatorProps {\r\n vertical?: boolean;\r\n}\r\nexport const Separator = ({ vertical }: ISeparatorProps) => {\r\n const containerClass = `border-muted items-center justify-center flex ${\r\n vertical ? \"w-1\" : \"h-8 w-full\"\r\n }`;\r\n const innerClass = `bg-muted w-full ${vertical ? \"h-16\" : \"h-1\"}`;\r\n\r\n return (\r\n <div className={containerClass}>\r\n <div className={innerClass} />\r\n </div>\r\n );\r\n};\r\n\r\nexport interface IStepperContentProps {\r\n canGoBack?: boolean;\r\n canGoNext?: boolean;\r\n children?: React.ReactNode;\r\n className?: string;\r\n controlsClassName?: string;\r\n isBackDisabled?: boolean;\r\n isNextDisabled?: boolean;\r\n nextButtonText?: string;\r\n previousButtonText?: string;\r\n title?: string;\r\n}\r\nexport const StepperContent = ({\r\n children,\r\n title,\r\n canGoBack = true,\r\n canGoNext = true,\r\n previousButtonText,\r\n nextButtonText,\r\n isBackDisabled,\r\n isNextDisabled,\r\n className,\r\n controlsClassName,\r\n}: IStepperContentProps) => {\r\n const {\r\n previousButtonText: defaultPreviousButtonText,\r\n nextButtonText: defaultNextButtonText,\r\n onIndexChange,\r\n vertical,\r\n stepsLength,\r\n } = useContext(StepperContext);\r\n const [isLastStep, setIsLastStep] = React.useState(false);\r\n return (\r\n <div id={title} className={cn(vertical ? \"w-10/12\" : \"w-full\", className)}>\r\n {children}\r\n {onIndexChange && (\r\n <div className={cn(\"mt-5 flex justify-between\", controlsClassName)}>\r\n <div>\r\n {canGoBack && (\r\n <Button\r\n variant=\"outline\"\r\n disabled={isBackDisabled}\r\n onClick={() =>\r\n onIndexChange((prev) => {\r\n if (prev > 0) {\r\n return prev - 1;\r\n }\r\n return prev;\r\n })\r\n }\r\n >\r\n {previousButtonText || defaultPreviousButtonText}\r\n </Button>\r\n )}\r\n </div>\r\n <div>\r\n {canGoNext && (\r\n <Button\r\n disabled={isNextDisabled || isLastStep}\r\n onClick={() =>\r\n onIndexChange((prev) => {\r\n if (prev === stepsLength - 1) {\r\n setIsLastStep(true);\r\n }\r\n if (prev < stepsLength - 1) {\r\n return prev + 1;\r\n }\r\n return prev;\r\n })\r\n }\r\n >\r\n {nextButtonText || defaultNextButtonText}\r\n </Button>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport interface IStepperHeaderProps {\r\n activeItemClassName?: string;\r\n activeTabIndex: number;\r\n containerClassName?: string;\r\n inactiveItemClassName?: string;\r\n keysWithSeparator:\r\n | (string | { icon: React.ReactNode; index: number; title: string })[]\r\n | undefined;\r\n vertical?: boolean;\r\n}\r\n\r\nexport const StepperHeader = ({\r\n keysWithSeparator,\r\n activeTabIndex,\r\n vertical,\r\n containerClassName,\r\n activeItemClassName,\r\n inactiveItemClassName,\r\n}: IStepperHeaderProps) => {\r\n const containerClass = cn(\r\n `flex gap-5 justify-between relative mb-10 ${\r\n vertical ? \"flex-col items-center w-2/12\" : \"w-full\"\r\n }`,\r\n containerClassName\r\n );\r\n const activeItemClass = cn(\"bg-primary text-white\", activeItemClassName);\r\n const inactiveItemClass = cn(\"bg-zinc-200 text-black\", inactiveItemClassName);\r\n\r\n return (\r\n <div className={containerClass}>\r\n {keysWithSeparator?.map((item, index) => {\r\n if (typeof item === \"string\") {\r\n return (\r\n <Separator\r\n key={`separator-${index.toString()}`}\r\n vertical={vertical}\r\n />\r\n );\r\n }\r\n\r\n const active = activeTabIndex === item.index;\r\n const innerClass = `rounded-full w-8 h-8 items-center justify-center flex text-xs ${\r\n active ? activeItemClass : inactiveItemClass\r\n }`;\r\n const titleContainerClass = `text-sm text-center ${\r\n active ? \"text-black\" : \"text-muted-foreground\"\r\n }`;\r\n return (\r\n <div key={item.index} className=\"flex flex-col items-center gap-2\">\r\n <div className={innerClass}>{item.icon || item.index + 1}</div>\r\n <div className={titleContainerClass}>{item.title}</div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n};\r\n\r\nconst StepperContext = createContext({\r\n nextButtonText: \"Next\",\r\n previousButtonText: \"Previous\",\r\n // eslint-disable-next-line\r\n onIndexChange: (value: SetStateAction<number>) => {},\r\n vertical: false,\r\n stepsLength: 2,\r\n});\r\nexport interface IStepperProps {\r\n activeTabIndex: number;\r\n children?: React.ReactNode[];\r\n className?: string;\r\n headerProps?: Partial<IStepperHeaderProps>;\r\n nextButtonText?: string;\r\n onIndexChange: Dispatch<SetStateAction<number>>;\r\n previousButtonText?: string;\r\n vertical?: boolean;\r\n}\r\n\r\nexport default function Stepper({\r\n children,\r\n activeTabIndex,\r\n vertical = false,\r\n nextButtonText = \"Next\",\r\n previousButtonText = \"Previous\",\r\n onIndexChange,\r\n className,\r\n headerProps,\r\n}: IStepperProps) {\r\n const keys = children?.flatMap((child, index) => {\r\n const item = React.isValidElement(child)\r\n ? {\r\n title: (child.props as { title: string }).title || \"\",\r\n icon: (child.props as { icon: string }).icon,\r\n index,\r\n }\r\n : { title: \"\", icon: \"\", index };\r\n if (index === 0) {\r\n return [item];\r\n }\r\n return [\"SEPARATOR\", item];\r\n });\r\n const stepsLength = Children.count(children);\r\n const providerProps = useMemo(\r\n () => ({\r\n nextButtonText,\r\n previousButtonText,\r\n onIndexChange,\r\n vertical,\r\n stepsLength,\r\n }),\r\n [nextButtonText, previousButtonText, onIndexChange, vertical, stepsLength]\r\n );\r\n const filteredChildren = React.Children.toArray(children)?.[activeTabIndex];\r\n return (\r\n <StepperContext.Provider value={providerProps}>\r\n <div className={cn(vertical ? \"flex flex-row gap-10\" : \"\", className)}>\r\n <StepperHeader\r\n keysWithSeparator={keys}\r\n activeTabIndex={activeTabIndex}\r\n vertical={vertical}\r\n {...headerProps}\r\n />\r\n {filteredChildren}\r\n </div>\r\n </StepperContext.Provider>\r\n );\r\n}\r\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/custom/stepper.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport React, {\r\n Children,\r\n Dispatch,\r\n SetStateAction,\r\n createContext,\r\n useContext,\r\n useMemo,\r\n} from \"react\";\r\nimport { Button } from \"@ayasofyazilim/ui/components/button\";\r\nimport { cn } from \"@ayasofyazilim/ui/lib/utils\";\r\n\r\nexport interface ISeparatorProps {\r\n vertical?: boolean;\r\n}\r\nexport const Separator = ({ vertical }: ISeparatorProps) => {\r\n const containerClass = `border-muted items-center justify-center flex ${\r\n vertical ? \"w-1\" : \"h-8 w-full\"\r\n }`;\r\n const innerClass = `bg-muted w-full ${vertical ? \"h-16\" : \"h-1\"}`;\r\n\r\n return (\r\n <div className={containerClass}>\r\n <div className={innerClass} />\r\n </div>\r\n );\r\n};\r\n\r\nexport interface IStepperContentProps {\r\n canGoBack?: boolean;\r\n canGoNext?: boolean;\r\n children?: React.ReactNode;\r\n className?: string;\r\n controlsClassName?: string;\r\n isBackDisabled?: boolean;\r\n isNextDisabled?: boolean;\r\n nextButtonText?: string;\r\n previousButtonText?: string;\r\n title?: string;\r\n}\r\nexport const StepperContent = ({\r\n children,\r\n title,\r\n canGoBack = true,\r\n canGoNext = true,\r\n previousButtonText,\r\n nextButtonText,\r\n isBackDisabled,\r\n isNextDisabled,\r\n className,\r\n controlsClassName,\r\n}: IStepperContentProps) => {\r\n const {\r\n previousButtonText: defaultPreviousButtonText,\r\n nextButtonText: defaultNextButtonText,\r\n onIndexChange,\r\n vertical,\r\n stepsLength,\r\n } = useContext(StepperContext);\r\n const [isLastStep, setIsLastStep] = React.useState(false);\r\n return (\r\n <div id={title} className={cn(vertical ? \"w-10/12\" : \"w-full\", className)}>\r\n {children}\r\n {onIndexChange && (\r\n <div className={cn(\"mt-5 flex justify-between\", controlsClassName)}>\r\n <div>\r\n {canGoBack && (\r\n <Button\r\n variant=\"outline\"\r\n disabled={isBackDisabled}\r\n onClick={() =>\r\n onIndexChange((prev) => {\r\n if (prev > 0) {\r\n return prev - 1;\r\n }\r\n return prev;\r\n })\r\n }\r\n >\r\n {previousButtonText || defaultPreviousButtonText}\r\n </Button>\r\n )}\r\n </div>\r\n <div>\r\n {canGoNext && (\r\n <Button\r\n disabled={isNextDisabled || isLastStep}\r\n onClick={() =>\r\n onIndexChange((prev) => {\r\n if (prev === stepsLength - 1) {\r\n setIsLastStep(true);\r\n }\r\n if (prev < stepsLength - 1) {\r\n return prev + 1;\r\n }\r\n return prev;\r\n })\r\n }\r\n >\r\n {nextButtonText || defaultNextButtonText}\r\n </Button>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport interface IStepperHeaderProps {\r\n activeItemClassName?: string;\r\n activeTabIndex: number;\r\n containerClassName?: string;\r\n inactiveItemClassName?: string;\r\n keysWithSeparator:\r\n | (string | { icon: React.ReactNode; index: number; title: string })[]\r\n | undefined;\r\n vertical?: boolean;\r\n}\r\n\r\nexport const StepperHeader = ({\r\n keysWithSeparator,\r\n activeTabIndex,\r\n vertical,\r\n containerClassName,\r\n activeItemClassName,\r\n inactiveItemClassName,\r\n}: IStepperHeaderProps) => {\r\n const containerClass = cn(\r\n `flex gap-5 justify-between relative mb-10 ${\r\n vertical ? \"flex-col items-center w-2/12\" : \"w-full\"\r\n }`,\r\n containerClassName,\r\n );\r\n const activeItemClass = cn(\"bg-primary text-white\", activeItemClassName);\r\n const inactiveItemClass = cn(\"bg-zinc-200 text-black\", inactiveItemClassName);\r\n\r\n return (\r\n <div className={containerClass}>\r\n {keysWithSeparator?.map((item, index) => {\r\n if (typeof item === \"string\") {\r\n return (\r\n <Separator\r\n key={`separator-${index.toString()}`}\r\n vertical={vertical}\r\n />\r\n );\r\n }\r\n\r\n const active = activeTabIndex === item.index;\r\n const innerClass = `rounded-full w-8 h-8 items-center justify-center flex text-xs ${\r\n active ? activeItemClass : inactiveItemClass\r\n }`;\r\n const titleContainerClass = `text-sm text-center ${\r\n active ? \"text-black\" : \"text-muted-foreground\"\r\n }`;\r\n return (\r\n <div key={item.index} className=\"flex flex-col items-center gap-2\">\r\n <div className={innerClass}>{item.icon || item.index + 1}</div>\r\n <div className={titleContainerClass}>{item.title}</div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n};\r\n\r\nconst StepperContext = createContext({\r\n nextButtonText: \"Next\",\r\n previousButtonText: \"Previous\",\r\n // eslint-disable-next-line\r\n onIndexChange: (value: SetStateAction<number>) => {},\r\n vertical: false,\r\n stepsLength: 2,\r\n});\r\nexport interface IStepperProps {\r\n activeTabIndex: number;\r\n children?: React.ReactNode[];\r\n className?: string;\r\n headerProps?: Partial<IStepperHeaderProps>;\r\n nextButtonText?: string;\r\n onIndexChange: Dispatch<SetStateAction<number>>;\r\n previousButtonText?: string;\r\n vertical?: boolean;\r\n}\r\n\r\nexport default function Stepper({\r\n children,\r\n activeTabIndex,\r\n vertical = false,\r\n nextButtonText = \"Next\",\r\n previousButtonText = \"Previous\",\r\n onIndexChange,\r\n className,\r\n headerProps,\r\n}: IStepperProps) {\r\n const keys = children?.flatMap((child, index) => {\r\n const item = React.isValidElement(child)\r\n ? {\r\n title: (child.props as { title: string }).title || \"\",\r\n icon: (child.props as { icon: string }).icon,\r\n index,\r\n }\r\n : { title: \"\", icon: \"\", index };\r\n if (index === 0) {\r\n return [item];\r\n }\r\n return [\"SEPARATOR\", item];\r\n });\r\n const stepsLength = Children.count(children);\r\n const providerProps = useMemo(\r\n () => ({\r\n nextButtonText,\r\n previousButtonText,\r\n onIndexChange,\r\n vertical,\r\n stepsLength,\r\n }),\r\n [nextButtonText, previousButtonText, onIndexChange, vertical, stepsLength],\r\n );\r\n const filteredChildren = React.Children.toArray(children)?.[activeTabIndex];\r\n return (\r\n <StepperContext.Provider value={providerProps}>\r\n <div className={cn(vertical ? \"flex flex-row gap-10\" : \"\", className)}>\r\n <StepperHeader\r\n keysWithSeparator={keys}\r\n activeTabIndex={activeTabIndex}\r\n vertical={vertical}\r\n {...headerProps}\r\n />\r\n {filteredChildren}\r\n </div>\r\n </StepperContext.Provider>\r\n );\r\n}\r\n"],"mappings":"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","names":[]}
|
|
@@ -4,8 +4,8 @@ import { cva } from "class-variance-authority";
|
|
|
4
4
|
import Link from "next/link";
|
|
5
5
|
import { usePathname, useSearchParams } from "next/navigation";
|
|
6
6
|
import { Suspense } from "react";
|
|
7
|
-
import { cn } from "@
|
|
8
|
-
import { Skeleton } from "@
|
|
7
|
+
import { cn } from "@ayasofyazilim/ui/lib/utils";
|
|
8
|
+
import { Skeleton } from "@ayasofyazilim/ui/components/skeleton";
|
|
9
9
|
const defaultClassNames = {
|
|
10
10
|
vertical: {
|
|
11
11
|
tabs: "flex h-full overflow-clip md:overflow-hidden block gap-2",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/custom/tab-layout.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { cva, VariantProps } from \"class-variance-authority\";\r\nimport Link from \"next/link\";\r\nimport { usePathname, useSearchParams } from \"next/navigation\";\r\nimport { ComponentType, ReactNode, Suspense } from \"react\";\r\nimport { cn } from \"@repo/ayasofyazilim-ui/lib/utils\";\r\nimport { Skeleton } from \"@repo/ayasofyazilim-ui/components/skeleton\";\r\n\r\ntype DeepPartial<T> = T extends object\r\n ? {\r\n [P in keyof T]?: DeepPartial<T[P]>;\r\n }\r\n : T;\r\nconst defaultClassNames = {\r\n vertical: {\r\n tabs: \"flex h-full overflow-clip md:overflow-hidden block gap-2\",\r\n tabList:\r\n \"flex flex-col h-full justify-start max-w-sm overflow-hidden border-b-2 pb-2 mb-2 md:mb-0 mb:border-b-0\",\r\n tabTrigger: \"justify-start md:max-w-lg overflow-hidden w-full\",\r\n tabContent: \"mx-2 my-0 w-full h-full overflow-auto flex-1\",\r\n },\r\n horizontal: {\r\n tabs: \"flex h-full overflow-hidden flex-col\",\r\n tabList: \"w-full mx:w-max overflow-x-auto overflow-y-hidden min-h-max\",\r\n tabTrigger: \"min-w-max\",\r\n tabContent: \"h-full my-2 overflow-auto\",\r\n },\r\n};\r\n\r\nconst tabsVariants = cva(\"\", {\r\n variants: {\r\n variant: {\r\n default: \"\",\r\n simple: \"\",\r\n },\r\n orientation: {\r\n horizontal: \"md:flex md:h-full md:overflow-hidden flex-col\",\r\n vertical: \"md:flex md:h-full\",\r\n },\r\n },\r\n defaultVariants: {\r\n orientation: \"horizontal\",\r\n variant: \"default\",\r\n },\r\n});\r\n\r\nconst tabListVariants = cva(\"\", {\r\n variants: {\r\n variant: {\r\n default:\r\n \"inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground\",\r\n simple: \"\",\r\n },\r\n orientation: {\r\n horizontal: \"w-max mx:w-max overflow-x-auto overflow-y-hidden min-h-max\",\r\n vertical:\r\n \"flex flex-col md:h-full justify-start md:max-w-[220px] w-full md:overflow-hidden md:pr-3 md:border-r border-muted\",\r\n },\r\n },\r\n defaultVariants: {\r\n orientation: \"horizontal\",\r\n variant: \"default\",\r\n },\r\n});\r\n\r\nconst tabTriggerVariants = cva(\r\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\r\n {\r\n variants: {\r\n variant: {\r\n default:\r\n \"px-3 py-1 ring-offset-background transition-all focus-visible:ring-2 focus-visible:ring-offset-2 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow\",\r\n simple:\r\n \"px-3 py-2 ring-offset-background transition-all rounded-lg focus-visible:ring-2 focus-visible:ring-offset-2 data-[state=active]:bg-muted data-[state=active]:text-foreground\",\r\n },\r\n orientation: {\r\n horizontal: \"\",\r\n vertical: \"justify-start md:max-w-lg overflow-hidden w-full\",\r\n },\r\n },\r\n defaultVariants: {\r\n orientation: \"horizontal\",\r\n variant: \"default\",\r\n },\r\n }\r\n);\r\n\r\nconst tabContentVariants = cva(\"\", {\r\n variants: {\r\n variant: {\r\n default:\r\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\r\n simple: \"\",\r\n },\r\n orientation: {\r\n horizontal: \"h-full my-2 overflow-auto\",\r\n vertical: \"my-0 w-full h-full overflow-auto flex-1\",\r\n },\r\n },\r\n defaultVariants: {\r\n orientation: \"horizontal\",\r\n variant: \"default\",\r\n },\r\n});\r\n\r\nfunction findActiveTab(tabList: { href: string }[], path: string) {\r\n const indexOfActiveTab = path\r\n .split(\"/\")\r\n .reverse()\r\n .findIndex((_, index) => {\r\n if (index === 0) {\r\n return tabList.find((i) => i.href === path);\r\n }\r\n const link = path.split(\"/\").slice(0, -index).join(\"/\");\r\n return tabList.find((i) => i.href === link);\r\n });\r\n if (indexOfActiveTab === -1) {\r\n return undefined;\r\n }\r\n if (indexOfActiveTab === 0) {\r\n return tabList.find((i) => i.href === path)?.href;\r\n }\r\n return tabList.find(\r\n (i) => i.href === path.split(\"/\").slice(0, -indexOfActiveTab).join(\"/\")\r\n )?.href;\r\n}\r\n\r\nexport function TabLayout({\r\n tabList,\r\n children,\r\n orientation = \"horizontal\",\r\n classNames,\r\n variant = \"default\",\r\n}: {\r\n tabList: {\r\n label: string;\r\n href: string;\r\n icon?: ComponentType<{ className?: string }>;\r\n fallback?: ReactNode;\r\n disabled?: boolean;\r\n }[];\r\n children: ReactNode;\r\n orientation?: \"horizontal\" | \"vertical\";\r\n classNames?: DeepPartial<typeof defaultClassNames>;\r\n variant?: VariantProps<typeof tabsVariants>[\"variant\"];\r\n}) {\r\n const tabsClassNames = tabsVariants({ orientation, variant });\r\n const tabListClassNames = tabListVariants({ orientation, variant });\r\n const tabTriggerClassNames = tabTriggerVariants({ orientation, variant });\r\n const tabContentClassNames = tabContentVariants({ orientation, variant });\r\n const path = usePathname();\r\n\r\n const searchParams = `?${useSearchParams().toString()}`;\r\n const active =\r\n findActiveTab(tabList, path + searchParams) ||\r\n findActiveTab(tabList, path) ||\r\n tabList[0]?.href ||\r\n \"\";\r\n\r\n return (\r\n <div\r\n className={cn(tabsClassNames, classNames?.[orientation]?.tabs)}\r\n role=\"tabpanel\"\r\n >\r\n <div\r\n role=\"tablist\"\r\n className={cn(tabListClassNames, classNames?.[orientation]?.tabList)}\r\n style={{\r\n scrollbarWidth: \"thin\",\r\n }}\r\n >\r\n {tabList.map((tab) => (\r\n <span\r\n role=\"tab\"\r\n key={tab.href}\r\n data-state={tab.href === active ? \"active\" : \"inactive\"}\r\n className={cn(\r\n tabTriggerClassNames,\r\n classNames?.[orientation]?.tabTrigger,\r\n tab.disabled && \"text-muted-foreground cursor-not-allowed\"\r\n )}\r\n >\r\n {tab.disabled ? (\r\n <span className=\"w-full overflow-hidden text-elipsis data-[state=active]:sticky data-[state=active]:left-0 data-[state=active]:right-0\">\r\n {tab.icon && <tab.icon className=\"block md:hidden\" />}\r\n {tab.label}\r\n </span>\r\n ) : (\r\n <Link\r\n href={tab.href}\r\n className=\"w-full overflow-hidden text-elipsis data-[state=active]:sticky data-[state=active]:left-0 data-[state=active]:right-0\"\r\n >\r\n {tab.icon && <tab.icon className=\"block md:hidden\" />}\r\n {tab.label}\r\n </Link>\r\n )}\r\n </span>\r\n ))}\r\n </div>\r\n <div\r\n className={cn(\r\n tabContentClassNames,\r\n classNames?.[orientation]?.tabContent\r\n )}\r\n >\r\n <Suspense fallback={<Skeleton className=\"flex-1 size-full\" />}>\r\n {children}\r\n </Suspense>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/custom/tab-layout.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { cva, VariantProps } from \"class-variance-authority\";\r\nimport Link from \"next/link\";\r\nimport { usePathname, useSearchParams } from \"next/navigation\";\r\nimport { ComponentType, ReactNode, Suspense } from \"react\";\r\nimport { cn } from \"@ayasofyazilim/ui/lib/utils\";\r\nimport { Skeleton } from \"@ayasofyazilim/ui/components/skeleton\";\r\n\r\ntype DeepPartial<T> = T extends object\r\n ? {\r\n [P in keyof T]?: DeepPartial<T[P]>;\r\n }\r\n : T;\r\nconst defaultClassNames = {\r\n vertical: {\r\n tabs: \"flex h-full overflow-clip md:overflow-hidden block gap-2\",\r\n tabList:\r\n \"flex flex-col h-full justify-start max-w-sm overflow-hidden border-b-2 pb-2 mb-2 md:mb-0 mb:border-b-0\",\r\n tabTrigger: \"justify-start md:max-w-lg overflow-hidden w-full\",\r\n tabContent: \"mx-2 my-0 w-full h-full overflow-auto flex-1\",\r\n },\r\n horizontal: {\r\n tabs: \"flex h-full overflow-hidden flex-col\",\r\n tabList: \"w-full mx:w-max overflow-x-auto overflow-y-hidden min-h-max\",\r\n tabTrigger: \"min-w-max\",\r\n tabContent: \"h-full my-2 overflow-auto\",\r\n },\r\n};\r\n\r\nconst tabsVariants = cva(\"\", {\r\n variants: {\r\n variant: {\r\n default: \"\",\r\n simple: \"\",\r\n },\r\n orientation: {\r\n horizontal: \"md:flex md:h-full md:overflow-hidden flex-col\",\r\n vertical: \"md:flex md:h-full\",\r\n },\r\n },\r\n defaultVariants: {\r\n orientation: \"horizontal\",\r\n variant: \"default\",\r\n },\r\n});\r\n\r\nconst tabListVariants = cva(\"\", {\r\n variants: {\r\n variant: {\r\n default:\r\n \"inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground\",\r\n simple: \"\",\r\n },\r\n orientation: {\r\n horizontal: \"w-max mx:w-max overflow-x-auto overflow-y-hidden min-h-max\",\r\n vertical:\r\n \"flex flex-col md:h-full justify-start md:max-w-[220px] w-full md:overflow-hidden md:pr-3 md:border-r border-muted\",\r\n },\r\n },\r\n defaultVariants: {\r\n orientation: \"horizontal\",\r\n variant: \"default\",\r\n },\r\n});\r\n\r\nconst tabTriggerVariants = cva(\r\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\r\n {\r\n variants: {\r\n variant: {\r\n default:\r\n \"px-3 py-1 ring-offset-background transition-all focus-visible:ring-2 focus-visible:ring-offset-2 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow\",\r\n simple:\r\n \"px-3 py-2 ring-offset-background transition-all rounded-lg focus-visible:ring-2 focus-visible:ring-offset-2 data-[state=active]:bg-muted data-[state=active]:text-foreground\",\r\n },\r\n orientation: {\r\n horizontal: \"\",\r\n vertical: \"justify-start md:max-w-lg overflow-hidden w-full\",\r\n },\r\n },\r\n defaultVariants: {\r\n orientation: \"horizontal\",\r\n variant: \"default\",\r\n },\r\n },\r\n);\r\n\r\nconst tabContentVariants = cva(\"\", {\r\n variants: {\r\n variant: {\r\n default:\r\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\r\n simple: \"\",\r\n },\r\n orientation: {\r\n horizontal: \"h-full my-2 overflow-auto\",\r\n vertical: \"my-0 w-full h-full overflow-auto flex-1\",\r\n },\r\n },\r\n defaultVariants: {\r\n orientation: \"horizontal\",\r\n variant: \"default\",\r\n },\r\n});\r\n\r\nfunction findActiveTab(tabList: { href: string }[], path: string) {\r\n const indexOfActiveTab = path\r\n .split(\"/\")\r\n .reverse()\r\n .findIndex((_, index) => {\r\n if (index === 0) {\r\n return tabList.find((i) => i.href === path);\r\n }\r\n const link = path.split(\"/\").slice(0, -index).join(\"/\");\r\n return tabList.find((i) => i.href === link);\r\n });\r\n if (indexOfActiveTab === -1) {\r\n return undefined;\r\n }\r\n if (indexOfActiveTab === 0) {\r\n return tabList.find((i) => i.href === path)?.href;\r\n }\r\n return tabList.find(\r\n (i) => i.href === path.split(\"/\").slice(0, -indexOfActiveTab).join(\"/\"),\r\n )?.href;\r\n}\r\n\r\nexport function TabLayout({\r\n tabList,\r\n children,\r\n orientation = \"horizontal\",\r\n classNames,\r\n variant = \"default\",\r\n}: {\r\n tabList: {\r\n label: string;\r\n href: string;\r\n icon?: ComponentType<{ className?: string }>;\r\n fallback?: ReactNode;\r\n disabled?: boolean;\r\n }[];\r\n children: ReactNode;\r\n orientation?: \"horizontal\" | \"vertical\";\r\n classNames?: DeepPartial<typeof defaultClassNames>;\r\n variant?: VariantProps<typeof tabsVariants>[\"variant\"];\r\n}) {\r\n const tabsClassNames = tabsVariants({ orientation, variant });\r\n const tabListClassNames = tabListVariants({ orientation, variant });\r\n const tabTriggerClassNames = tabTriggerVariants({ orientation, variant });\r\n const tabContentClassNames = tabContentVariants({ orientation, variant });\r\n const path = usePathname();\r\n\r\n const searchParams = `?${useSearchParams().toString()}`;\r\n const active =\r\n findActiveTab(tabList, path + searchParams) ||\r\n findActiveTab(tabList, path) ||\r\n tabList[0]?.href ||\r\n \"\";\r\n\r\n return (\r\n <div\r\n className={cn(tabsClassNames, classNames?.[orientation]?.tabs)}\r\n role=\"tabpanel\"\r\n >\r\n <div\r\n role=\"tablist\"\r\n className={cn(tabListClassNames, classNames?.[orientation]?.tabList)}\r\n style={{\r\n scrollbarWidth: \"thin\",\r\n }}\r\n >\r\n {tabList.map((tab) => (\r\n <span\r\n role=\"tab\"\r\n key={tab.href}\r\n data-state={tab.href === active ? \"active\" : \"inactive\"}\r\n className={cn(\r\n tabTriggerClassNames,\r\n classNames?.[orientation]?.tabTrigger,\r\n tab.disabled && \"text-muted-foreground cursor-not-allowed\",\r\n )}\r\n >\r\n {tab.disabled ? (\r\n <span className=\"w-full overflow-hidden text-elipsis data-[state=active]:sticky data-[state=active]:left-0 data-[state=active]:right-0\">\r\n {tab.icon && <tab.icon className=\"block md:hidden\" />}\r\n {tab.label}\r\n </span>\r\n ) : (\r\n <Link\r\n href={tab.href}\r\n className=\"w-full overflow-hidden text-elipsis data-[state=active]:sticky data-[state=active]:left-0 data-[state=active]:right-0\"\r\n >\r\n {tab.icon && <tab.icon className=\"block md:hidden\" />}\r\n {tab.label}\r\n </Link>\r\n )}\r\n </span>\r\n ))}\r\n </div>\r\n <div\r\n className={cn(\r\n tabContentClassNames,\r\n classNames?.[orientation]?.tabContent,\r\n )}\r\n >\r\n <Suspense fallback={<Skeleton className=\"flex-1 size-full\" />}>\r\n {children}\r\n </Suspense>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"mappings":"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","names":[]}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { ArrowDownIcon, ArrowUpIcon, ChevronsUpDownIcon } from "lucide-react";
|
|
3
|
-
import { Button } from "@
|
|
3
|
+
import { Button } from "@ayasofyazilim/ui/components/button";
|
|
4
4
|
import {
|
|
5
5
|
DropdownMenu,
|
|
6
6
|
DropdownMenuContent,
|
|
7
7
|
DropdownMenuItem,
|
|
8
8
|
DropdownMenuTrigger
|
|
9
|
-
} from "@
|
|
10
|
-
import { cn } from "@
|
|
9
|
+
} from "@ayasofyazilim/ui/components/dropdown-menu";
|
|
10
|
+
import { cn } from "@ayasofyazilim/ui/lib/utils";
|
|
11
11
|
function TanstackTableColumnHeader({
|
|
12
12
|
column,
|
|
13
13
|
title,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/custom/tanstack-table/fields/tanstack-table-column-header.tsx"],"sourcesContent":["import { ArrowDownIcon, ArrowUpIcon, ChevronsUpDownIcon } from \"lucide-react\";\r\nimport { Column } from \"@tanstack/react-table\";\r\n\r\nimport { HTMLAttributes } from \"react\";\r\nimport { Button } from \"@
|
|
1
|
+
{"version":3,"sources":["../../../../src/custom/tanstack-table/fields/tanstack-table-column-header.tsx"],"sourcesContent":["import { ArrowDownIcon, ArrowUpIcon, ChevronsUpDownIcon } from \"lucide-react\";\r\nimport { Column } from \"@tanstack/react-table\";\r\n\r\nimport { HTMLAttributes } from \"react\";\r\nimport { Button } from \"@ayasofyazilim/ui/components/button\";\r\nimport {\r\n DropdownMenu,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuTrigger,\r\n} from \"@ayasofyazilim/ui/components/dropdown-menu\";\r\nimport { cn } from \"@ayasofyazilim/ui/lib/utils\";\r\n\r\ninterface TanstackTableColumnHeaderProps<\r\n TData,\r\n TValue,\r\n> extends HTMLAttributes<HTMLDivElement> {\r\n column: Column<TData, TValue>;\r\n title: string;\r\n}\r\n\r\nexport function TanstackTableColumnHeader<TData, TValue>({\r\n column,\r\n title,\r\n className,\r\n}: TanstackTableColumnHeaderProps<TData, TValue>) {\r\n if (!column.getCanSort()) {\r\n return <div className={cn(className)}>{title}</div>;\r\n }\r\n\r\n return (\r\n <div className={cn(\"flex items-center w-full space-x-2 mx-2\", className)}>\r\n <DropdownMenu>\r\n <DropdownMenuTrigger asChild>\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n className=\"-ml-3 h-8 data-[state=open]:bg-accent w-full justify-between\"\r\n >\r\n <span>{title}</span>\r\n {column.getIsSorted() === \"desc\" ? (\r\n <ArrowDownIcon className=\"ml-2 h-4 w-4\" />\r\n ) : column.getIsSorted() === \"asc\" ? (\r\n <ArrowUpIcon className=\"ml-2 h-4 w-4\" />\r\n ) : (\r\n <ChevronsUpDownIcon className=\"ml-2 h-4 w-4\" />\r\n )}\r\n </Button>\r\n </DropdownMenuTrigger>\r\n <DropdownMenuContent align=\"start\">\r\n <DropdownMenuItem onClick={() => column.toggleSorting(false)}>\r\n <ArrowUpIcon className=\"mr-2 h-3.5 w-3.5 text-muted-foreground/70\" />\r\n Asc\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => column.toggleSorting(true)}>\r\n <ArrowDownIcon className=\"mr-2 h-3.5 w-3.5 text-muted-foreground/70\" />\r\n Desc\r\n </DropdownMenuItem>\r\n {/* <DropdownMenuSeparator />\r\n <DropdownMenuItem onClick={() => column.toggleVisibility(false)}>\r\n <EyeNoneIcon className=\"mr-2 h-3.5 w-3.5 text-muted-foreground/70\" />\r\n Hide\r\n </DropdownMenuItem> */}\r\n </DropdownMenuContent>\r\n </DropdownMenu>\r\n </div>\r\n );\r\n}\r\n"],"mappings":"AA2BW,cAOD,YAPC;AA3BX,SAAS,eAAe,aAAa,0BAA0B;AAI/D,SAAS,cAAc;AACvB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,UAAU;AAUZ,SAAS,0BAAyC;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AACF,GAAkD;AAChD,MAAI,CAAC,OAAO,WAAW,GAAG;AACxB,WAAO,oBAAC,SAAI,WAAW,GAAG,SAAS,GAAI,iBAAM;AAAA,EAC/C;AAEA,SACE,oBAAC,SAAI,WAAW,GAAG,2CAA2C,SAAS,GACrE,+BAAC,gBACC;AAAA,wBAAC,uBAAoB,SAAO,MAC1B;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,WAAU;AAAA,QAEV;AAAA,8BAAC,UAAM,iBAAM;AAAA,UACZ,OAAO,YAAY,MAAM,SACxB,oBAAC,iBAAc,WAAU,gBAAe,IACtC,OAAO,YAAY,MAAM,QAC3B,oBAAC,eAAY,WAAU,gBAAe,IAEtC,oBAAC,sBAAmB,WAAU,gBAAe;AAAA;AAAA;AAAA,IAEjD,GACF;AAAA,IACA,qBAAC,uBAAoB,OAAM,SACzB;AAAA,2BAAC,oBAAiB,SAAS,MAAM,OAAO,cAAc,KAAK,GACzD;AAAA,4BAAC,eAAY,WAAU,6CAA4C;AAAA,QAAE;AAAA,SAEvE;AAAA,MACA,qBAAC,oBAAiB,SAAS,MAAM,OAAO,cAAc,IAAI,GACxD;AAAA,4BAAC,iBAAc,WAAU,6CAA4C;AAAA,QAAE;AAAA,SAEzE;AAAA,OAMF;AAAA,KACF,GACF;AAEJ;","names":[]}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { CirclePlusIcon } from "lucide-react";
|
|
3
3
|
import { useEffect, useState } from "react";
|
|
4
|
-
import { Button } from "@
|
|
4
|
+
import { Button } from "@ayasofyazilim/ui/components/button";
|
|
5
5
|
import {
|
|
6
6
|
Popover,
|
|
7
7
|
PopoverContent,
|
|
8
8
|
PopoverTrigger
|
|
9
|
-
} from "@
|
|
10
|
-
import { Separator } from "@
|
|
9
|
+
} from "@ayasofyazilim/ui/components/popover";
|
|
10
|
+
import { Separator } from "@ayasofyazilim/ui/components/separator";
|
|
11
11
|
import {
|
|
12
12
|
DatePicker,
|
|
13
13
|
DateRangePicker
|
|
14
|
-
} from "@
|
|
14
|
+
} from "@ayasofyazilim/ui/custom/date-picker";
|
|
15
15
|
function TanstackTableDateFilter({
|
|
16
16
|
column,
|
|
17
17
|
accessorKey,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/custom/tanstack-table/fields/tanstack-table-filter-date.tsx"],"sourcesContent":["import { CirclePlusIcon } from \"lucide-react\";\r\nimport { Column } from \"@tanstack/react-table\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { Button } from \"@
|
|
1
|
+
{"version":3,"sources":["../../../../src/custom/tanstack-table/fields/tanstack-table-filter-date.tsx"],"sourcesContent":["import { CirclePlusIcon } from \"lucide-react\";\r\nimport { Column } from \"@tanstack/react-table\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { Button } from \"@ayasofyazilim/ui/components/button\";\r\nimport {\r\n Popover,\r\n PopoverContent,\r\n PopoverTrigger,\r\n} from \"@ayasofyazilim/ui/components/popover\";\r\nimport { Separator } from \"@ayasofyazilim/ui/components/separator\";\r\nimport { TanstackTableDateFilterType } from \"../types\";\r\nimport {\r\n DatePicker,\r\n DateRangePicker,\r\n} from \"@ayasofyazilim/ui/custom/date-picker\";\r\nimport { DateRange } from \"@ayasofyazilim/ui/custom/date-picker/types\";\r\n\r\ninterface TanstackTableDateFilterProps<TData, TValue> {\r\n accessorKey: string;\r\n column?: Column<TData, TValue>;\r\n dateItem: TanstackTableDateFilterType;\r\n onFilter: (accessorKey: string, selectedValues: string) => void;\r\n onFilterMultiple: (\r\n filter: {\r\n accessorKey: string;\r\n selectedValues: string;\r\n }[],\r\n ) => void;\r\n params: URLSearchParams;\r\n}\r\n\r\nexport function TanstackTableDateFilter<TData, TValue>({\r\n column,\r\n accessorKey,\r\n params,\r\n onFilter,\r\n onFilterMultiple,\r\n dateItem,\r\n}: TanstackTableDateFilterProps<TData, TValue>) {\r\n const title = column?.columnDef?.meta?.toString() || accessorKey;\r\n\r\n // If endAccessorKey is provided, then it is a date range. Otherwise it is a single date.\r\n const [date, setDate] = useState<Date | DateRange | undefined>(\r\n dateItem?.endAccessorKey\r\n ? {\r\n start: params?.get(dateItem.startAccessorKey)\r\n ? new Date(params?.get(dateItem.startAccessorKey) as string)\r\n : undefined,\r\n end: params?.get(dateItem?.endAccessorKey)\r\n ? new Date(params?.get(dateItem.endAccessorKey) as string)\r\n : undefined,\r\n }\r\n : params?.get(dateItem.startAccessorKey)\r\n ? new Date(params?.get(dateItem.startAccessorKey) as string)\r\n : undefined,\r\n );\r\n\r\n useEffect(() => {\r\n function isFilterChanged(accessorKey: string, date: Date | undefined) {\r\n return params.get(accessorKey) !== date?.toISOString();\r\n }\r\n\r\n function isFiltered(accessorKey: string) {\r\n return !!params.get(accessorKey);\r\n }\r\n\r\n const filter: {\r\n accessorKey: string;\r\n selectedValues: string;\r\n }[] = [];\r\n\r\n if (!date) {\r\n // This works when filters cleared\r\n if (isFiltered(dateItem.startAccessorKey)) {\r\n filter.push({\r\n accessorKey: dateItem.startAccessorKey,\r\n selectedValues: \"\",\r\n });\r\n }\r\n if (dateItem?.endAccessorKey && isFiltered(dateItem.endAccessorKey)) {\r\n filter.push({\r\n accessorKey: dateItem.endAccessorKey,\r\n selectedValues: \"\",\r\n });\r\n }\r\n\r\n if (filter.length > 0) {\r\n onFilterMultiple(filter);\r\n }\r\n return;\r\n }\r\n\r\n if (date instanceof Date) {\r\n // It's a single date, no endAccessorKey\r\n if (isFilterChanged(dateItem?.startAccessorKey, date)) {\r\n onFilter(dateItem?.startAccessorKey, date.toISOString());\r\n }\r\n return;\r\n }\r\n\r\n if (!dateItem.canFilteredBySingleDate && (!date.start || !date.end)) return;\r\n\r\n if (isFilterChanged(dateItem.startAccessorKey, date.start)) {\r\n filter.push({\r\n accessorKey: dateItem.startAccessorKey,\r\n selectedValues: date.start?.toISOString() || \"\",\r\n });\r\n }\r\n\r\n if (\r\n dateItem.endAccessorKey &&\r\n isFilterChanged(dateItem.endAccessorKey, date.end)\r\n ) {\r\n filter.push({\r\n accessorKey: dateItem.endAccessorKey,\r\n selectedValues: date.end?.toISOString() || \"\",\r\n });\r\n }\r\n\r\n if (filter.length > 0) {\r\n onFilterMultiple(filter);\r\n }\r\n }, [date]);\r\n\r\n return (\r\n <Popover>\r\n <PopoverTrigger asChild>\r\n <Button variant=\"outline\" size=\"sm\" className=\"h-8 border-dashed\">\r\n <CirclePlusIcon className=\"mr-2 h-4 w-4\" />\r\n {title}\r\n {date && \"start\" in date && \"to\" in date && date.start && (\r\n <div className=\"hidden space-x-1 md:flex\">\r\n <Separator orientation=\"vertical\" className=\"mx-2 h-4\" />\r\n {new Date(date.start).toLocaleDateString()} -\r\n {date.end && new Date(date?.end).toLocaleDateString()}\r\n </div>\r\n )}\r\n {date instanceof Date && (\r\n <div className=\"hidden space-x-1 md:flex\">\r\n <Separator orientation=\"vertical\" className=\"mx-2 h-4\" />\r\n {new Date(date).toLocaleDateString()}\r\n </div>\r\n )}\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"p-0 w-full min-w-fit\" align=\"start\">\r\n {dateItem?.endAccessorKey ? (\r\n <DateRangePicker\r\n id={dateItem.startAccessorKey}\r\n classNames={{\r\n dateInput: \"border-0 border-b rounded-none\",\r\n }}\r\n onChange={(_date) => {\r\n setDate(_date);\r\n }}\r\n defaultValues={date as DateRange}\r\n />\r\n ) : (\r\n <DatePicker\r\n id={dateItem.endAccessorKey || \"\"}\r\n onChange={(_date) => {\r\n setDate(_date);\r\n }}\r\n defaultValue={date as Date | undefined}\r\n />\r\n )}\r\n <div className=\"p-1\">\r\n <Button\r\n onClick={() => setDate(undefined)}\r\n variant=\"ghost\"\r\n className=\"justify-center text-center w-full hover:bg-accent text-accent-foreground\"\r\n >\r\n Clean Filter\r\n </Button>\r\n </div>\r\n </PopoverContent>\r\n </Popover>\r\n );\r\n}\r\n"],"mappings":"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","names":["accessorKey","date"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { CheckIcon, CirclePlusIcon } from "lucide-react";
|
|
3
3
|
import { useEffect, useState } from "react";
|
|
4
|
-
import { Badge } from "@
|
|
5
|
-
import { Button } from "@
|
|
4
|
+
import { Badge } from "@ayasofyazilim/ui/components/badge";
|
|
5
|
+
import { Button } from "@ayasofyazilim/ui/components/button";
|
|
6
6
|
import {
|
|
7
7
|
Command,
|
|
8
8
|
CommandEmpty,
|
|
@@ -11,14 +11,14 @@ import {
|
|
|
11
11
|
CommandItem,
|
|
12
12
|
CommandList,
|
|
13
13
|
CommandSeparator
|
|
14
|
-
} from "@
|
|
14
|
+
} from "@ayasofyazilim/ui/components/command";
|
|
15
15
|
import {
|
|
16
16
|
Popover,
|
|
17
17
|
PopoverContent,
|
|
18
18
|
PopoverTrigger
|
|
19
|
-
} from "@
|
|
20
|
-
import { Separator } from "@
|
|
21
|
-
import { cn } from "@
|
|
19
|
+
} from "@ayasofyazilim/ui/components/popover";
|
|
20
|
+
import { Separator } from "@ayasofyazilim/ui/components/separator";
|
|
21
|
+
import { cn } from "@ayasofyazilim/ui/lib/utils";
|
|
22
22
|
function TanstackTableFacetedFilter({
|
|
23
23
|
column,
|
|
24
24
|
accessorKey,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/custom/tanstack-table/fields/tanstack-table-filter-faceted.tsx"],"sourcesContent":["import { CheckIcon, CirclePlusIcon } from \"lucide-react\";\r\nimport { Column } from \"@tanstack/react-table\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { Badge } from \"@
|
|
1
|
+
{"version":3,"sources":["../../../../src/custom/tanstack-table/fields/tanstack-table-filter-faceted.tsx"],"sourcesContent":["import { CheckIcon, CirclePlusIcon } from \"lucide-react\";\r\nimport { Column } from \"@tanstack/react-table\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { Badge } from \"@ayasofyazilim/ui/components/badge\";\r\nimport { Button } from \"@ayasofyazilim/ui/components/button\";\r\nimport {\r\n Command,\r\n CommandEmpty,\r\n CommandGroup,\r\n CommandInput,\r\n CommandItem,\r\n CommandList,\r\n CommandSeparator,\r\n} from \"@ayasofyazilim/ui/components/command\";\r\nimport {\r\n Popover,\r\n PopoverContent,\r\n PopoverTrigger,\r\n} from \"@ayasofyazilim/ui/components/popover\";\r\nimport { Separator } from \"@ayasofyazilim/ui/components/separator\";\r\nimport { cn } from \"@ayasofyazilim/ui/lib/utils\";\r\nimport { TanstackTableFacetedFilterType } from \"../types\";\r\n\r\ninterface DataTableFacetedFilterProps<TData, TValue> {\r\n accessorKey: string;\r\n column?: Column<TData, TValue>;\r\n onFilter: (accessorKey: string, selectedValues: string) => void;\r\n options: TanstackTableFacetedFilterType[];\r\n params: URLSearchParams;\r\n title: string;\r\n}\r\n\r\nexport function TanstackTableFacetedFilter<TData, TValue>({\r\n column,\r\n accessorKey,\r\n options,\r\n onFilter,\r\n params,\r\n title,\r\n}: DataTableFacetedFilterProps<TData, TValue>) {\r\n const facets = column?.getFacetedUniqueValues();\r\n const [selectedValues, setSelectedValues] = useState(\r\n new Set(params?.get(accessorKey)?.split(\",\") || []),\r\n );\r\n useEffect(() => {\r\n setSelectedValues(new Set(params?.get(accessorKey)?.split(\",\") || []));\r\n }, [params?.get(accessorKey)]);\r\n\r\n return (\r\n <Popover>\r\n <PopoverTrigger asChild>\r\n <Button variant=\"outline\" size=\"sm\" className=\"h-8 border-dashed\">\r\n <CirclePlusIcon className=\"mr-2 h-4 w-4\" />\r\n {title}\r\n {selectedValues?.size > 0 && (\r\n <>\r\n <Separator orientation=\"vertical\" className=\"mx-2 h-4\" />\r\n <Badge\r\n variant=\"secondary\"\r\n className=\"rounded-sm px-1 font-normal lg:hidden\"\r\n >\r\n {selectedValues.size}\r\n </Badge>\r\n <div className=\"hidden space-x-1 lg:flex\">\r\n {selectedValues.size > 2 ? (\r\n <Badge\r\n variant=\"secondary\"\r\n className=\"rounded-sm px-1 font-normal\"\r\n >\r\n {selectedValues.size} Selected\r\n </Badge>\r\n ) : (\r\n options\r\n .filter((option) => selectedValues.has(option.value))\r\n .map((option) => (\r\n <Badge\r\n variant=\"secondary\"\r\n key={option.value}\r\n className=\"rounded-sm px-1 font-normal\"\r\n >\r\n {option.label}\r\n </Badge>\r\n ))\r\n )}\r\n </div>\r\n </>\r\n )}\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-[200px] p-0\" align=\"start\">\r\n <Command>\r\n <CommandInput placeholder={title} />\r\n <CommandList>\r\n <CommandEmpty>No Filter results</CommandEmpty>\r\n <CommandGroup>\r\n {options.map((option) => {\r\n const isSelected = selectedValues.has(option.value);\r\n return (\r\n <CommandItem\r\n key={option.value}\r\n onSelect={() => {\r\n const current = Array.from(selectedValues);\r\n if (isSelected) {\r\n current.splice(\r\n current.findIndex((i) => i === option.value),\r\n 1,\r\n );\r\n } else {\r\n current.push(option.value);\r\n }\r\n\r\n onFilter(accessorKey, current.join(\",\"));\r\n setSelectedValues(new Set(current));\r\n }}\r\n >\r\n <div\r\n className={cn(\r\n \"mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary\",\r\n isSelected\r\n ? \"bg-primary text-primary-foreground\"\r\n : \"opacity-50 [&_svg]:invisible\",\r\n )}\r\n >\r\n <CheckIcon className={cn(\"h-4 w-4\")} />\r\n </div>\r\n {option.icon && (\r\n <option.icon className=\"mr-2 h-4 w-4 text-muted-foreground\" />\r\n )}\r\n <span>{option.label}</span>\r\n {facets?.get(option.value) && (\r\n <span className=\"ml-auto flex h-4 w-4 items-center justify-center font-mono text-xs\">\r\n {facets.get(option.value)}\r\n </span>\r\n )}\r\n </CommandItem>\r\n );\r\n })}\r\n </CommandGroup>\r\n {selectedValues.size > 0 && (\r\n <>\r\n <CommandSeparator />\r\n <CommandGroup>\r\n <CommandItem\r\n onSelect={() => onFilter(accessorKey, \"\")}\r\n className=\"justify-center text-center\"\r\n >\r\n Clean Filter\r\n </CommandItem>\r\n </CommandGroup>\r\n </>\r\n )}\r\n </CommandList>\r\n </Command>\r\n </PopoverContent>\r\n </Popover>\r\n );\r\n}\r\n"],"mappings":"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","names":[]}
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { CirclePlusIcon } from "lucide-react";
|
|
3
3
|
import { useEffect, useState } from "react";
|
|
4
|
-
import { Button } from "@
|
|
5
|
-
import {
|
|
6
|
-
Command,
|
|
7
|
-
CommandInput
|
|
8
|
-
} from "@repo/ayasofyazilim-ui/components/command";
|
|
4
|
+
import { Button } from "@ayasofyazilim/ui/components/button";
|
|
5
|
+
import { Command, CommandInput } from "@ayasofyazilim/ui/components/command";
|
|
9
6
|
import {
|
|
10
7
|
Popover,
|
|
11
8
|
PopoverContent,
|
|
12
9
|
PopoverTrigger
|
|
13
|
-
} from "@
|
|
14
|
-
import { Separator } from "@
|
|
15
|
-
import { useDebounce } from "@
|
|
10
|
+
} from "@ayasofyazilim/ui/components/popover";
|
|
11
|
+
import { Separator } from "@ayasofyazilim/ui/components/separator";
|
|
12
|
+
import { useDebounce } from "@ayasofyazilim/ui/hooks/use-debounce";
|
|
16
13
|
function TanstackTableTextFilter({
|
|
17
14
|
column,
|
|
18
15
|
title: _title,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/custom/tanstack-table/fields/tanstack-table-filter-text.tsx"],"sourcesContent":["import { CirclePlusIcon } from \"lucide-react\";\r\nimport { Column } from \"@tanstack/react-table\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { Button } from \"@
|
|
1
|
+
{"version":3,"sources":["../../../../src/custom/tanstack-table/fields/tanstack-table-filter-text.tsx"],"sourcesContent":["import { CirclePlusIcon } from \"lucide-react\";\r\nimport { Column } from \"@tanstack/react-table\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { Button } from \"@ayasofyazilim/ui/components/button\";\r\nimport { Command, CommandInput } from \"@ayasofyazilim/ui/components/command\";\r\nimport {\r\n Popover,\r\n PopoverContent,\r\n PopoverTrigger,\r\n} from \"@ayasofyazilim/ui/components/popover\";\r\nimport { Separator } from \"@ayasofyazilim/ui/components/separator\";\r\nimport { useDebounce } from \"@ayasofyazilim/ui/hooks/use-debounce\";\r\n\r\ninterface TanstackTableTextFilterProps<TData, TValue> {\r\n accessorKey: string;\r\n column?: Column<TData, TValue>;\r\n onFilter: (accessorKey: string, selectedValues: string) => void;\r\n params: URLSearchParams;\r\n title?: string;\r\n}\r\n\r\nexport function TanstackTableTextFilter<TData, TValue>({\r\n column,\r\n title: _title,\r\n accessorKey,\r\n params,\r\n onFilter,\r\n}: TanstackTableTextFilterProps<TData, TValue>) {\r\n const title = _title || column?.columnDef?.meta?.toString() || accessorKey;\r\n const [searchInput, setSearchInput] = useState(\"\");\r\n const filterValue = useDebounce(searchInput || \"\", 500);\r\n\r\n useEffect(() => {\r\n if (params?.get(accessorKey) !== filterValue) {\r\n onFilter(accessorKey, filterValue);\r\n }\r\n }, [filterValue]);\r\n return (\r\n <Popover>\r\n <PopoverTrigger asChild>\r\n <Button variant=\"outline\" size=\"sm\" className=\"h-8 border-dashed\">\r\n <CirclePlusIcon className=\"mr-2 h-4 w-4\" />\r\n {title}\r\n {filterValue?.length > 0 && (\r\n <>\r\n <Separator orientation=\"vertical\" className=\"mx-2 h-4\" />\r\n <div className=\"hidden space-x-1 lg:flex\">{filterValue}</div>\r\n </>\r\n )}\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-[200px] p-0\" align=\"start\">\r\n <Command>\r\n <CommandInput\r\n placeholder={title}\r\n value={searchInput}\r\n onValueChange={(value) => setSearchInput(value)}\r\n />\r\n </Command>\r\n <div className=\"p-1\">\r\n <Button\r\n onClick={() => setSearchInput(\"\")}\r\n variant=\"ghost\"\r\n className=\"justify-center text-center w-full hover:bg-accent text-accent-foreground\"\r\n >\r\n Clean Filter\r\n </Button>\r\n </div>\r\n </PopoverContent>\r\n </Popover>\r\n );\r\n}\r\n"],"mappings":"AA0CU,SAGE,UAHF,KAGE,YAHF;AA1CV,SAAS,sBAAsB;AAG/B,SAAS,WAAW,gBAAgB;AACpC,SAAS,cAAc;AACvB,SAAS,SAAS,oBAAoB;AACtC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,iBAAiB;AAC1B,SAAS,mBAAmB;AAUrB,SAAS,wBAAuC;AAAA,EACrD;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AACF,GAAgD;AAC9C,QAAM,QAAQ,UAAU,QAAQ,WAAW,MAAM,SAAS,KAAK;AAC/D,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,EAAE;AACjD,QAAM,cAAc,YAAY,eAAe,IAAI,GAAG;AAEtD,YAAU,MAAM;AACd,QAAI,QAAQ,IAAI,WAAW,MAAM,aAAa;AAC5C,eAAS,aAAa,WAAW;AAAA,IACnC;AAAA,EACF,GAAG,CAAC,WAAW,CAAC;AAChB,SACE,qBAAC,WACC;AAAA,wBAAC,kBAAe,SAAO,MACrB,+BAAC,UAAO,SAAQ,WAAU,MAAK,MAAK,WAAU,qBAC5C;AAAA,0BAAC,kBAAe,WAAU,gBAAe;AAAA,MACxC;AAAA,MACA,aAAa,SAAS,KACrB,iCACE;AAAA,4BAAC,aAAU,aAAY,YAAW,WAAU,YAAW;AAAA,QACvD,oBAAC,SAAI,WAAU,4BAA4B,uBAAY;AAAA,SACzD;AAAA,OAEJ,GACF;AAAA,IACA,qBAAC,kBAAe,WAAU,iBAAgB,OAAM,SAC9C;AAAA,0BAAC,WACC;AAAA,QAAC;AAAA;AAAA,UACC,aAAa;AAAA,UACb,OAAO;AAAA,UACP,eAAe,CAAC,UAAU,eAAe,KAAK;AAAA;AAAA,MAChD,GACF;AAAA,MACA,oBAAC,SAAI,WAAU,OACb;AAAA,QAAC;AAAA;AAAA,UACC,SAAS,MAAM,eAAe,EAAE;AAAA,UAChC,SAAQ;AAAA,UACR,WAAU;AAAA,UACX;AAAA;AAAA,MAED,GACF;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -8,14 +8,14 @@ import {
|
|
|
8
8
|
} from "lucide-react";
|
|
9
9
|
import { usePathname, useRouter, useSearchParams } from "next/navigation";
|
|
10
10
|
import { useEffect } from "react";
|
|
11
|
-
import { Button } from "@
|
|
11
|
+
import { Button } from "@ayasofyazilim/ui/components/button";
|
|
12
12
|
import {
|
|
13
13
|
Select,
|
|
14
14
|
SelectContent,
|
|
15
15
|
SelectItem,
|
|
16
16
|
SelectTrigger,
|
|
17
17
|
SelectValue
|
|
18
|
-
} from "@
|
|
18
|
+
} from "@ayasofyazilim/ui/components/select";
|
|
19
19
|
function TanstackTablePagination(props) {
|
|
20
20
|
const { table, pagination } = props;
|
|
21
21
|
const { replace } = useRouter();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/custom/tanstack-table/fields/tanstack-table-pagination.tsx"],"sourcesContent":["\"use no memo\";\r\nimport {\r\n ChevronLeftIcon,\r\n ChevronRightIcon,\r\n ChevronsLeftIcon,\r\n ChevronsRightIcon,\r\n} from \"lucide-react\";\r\nimport { Table } from \"@tanstack/react-table\";\r\n\r\nimport { usePathname, useRouter, useSearchParams } from \"next/navigation\";\r\nimport { useEffect } from \"react\";\r\nimport { Button } from \"@
|
|
1
|
+
{"version":3,"sources":["../../../../src/custom/tanstack-table/fields/tanstack-table-pagination.tsx"],"sourcesContent":["\"use no memo\";\r\nimport {\r\n ChevronLeftIcon,\r\n ChevronRightIcon,\r\n ChevronsLeftIcon,\r\n ChevronsRightIcon,\r\n} from \"lucide-react\";\r\nimport { Table } from \"@tanstack/react-table\";\r\n\r\nimport { usePathname, useRouter, useSearchParams } from \"next/navigation\";\r\nimport { useEffect } from \"react\";\r\nimport { Button } from \"@ayasofyazilim/ui/components/button\";\r\nimport {\r\n Select,\r\n SelectContent,\r\n SelectItem,\r\n SelectTrigger,\r\n SelectValue,\r\n} from \"@ayasofyazilim/ui/components/select\";\r\n\r\ninterface TanstackTablePaginationProps<TData> {\r\n pagination: {\r\n pageIndex: number;\r\n pageSize: number;\r\n };\r\n table: Table<TData>;\r\n}\r\n\r\nexport function TanstackTablePagination<TData>(\r\n props: TanstackTablePaginationProps<TData>,\r\n) {\r\n const { table, pagination } = props;\r\n const { replace } = useRouter();\r\n const pathname = usePathname();\r\n const searchParams = useSearchParams();\r\n\r\n useEffect(() => {\r\n const params = new URLSearchParams(searchParams.toString());\r\n\r\n if (Number(searchParams?.get(\"maxResultCount\")) !== pagination.pageSize) {\r\n params.set(\"maxResultCount\", pagination.pageSize.toString());\r\n }\r\n if (\r\n Number(searchParams?.get(\"skipCount\")) !==\r\n pagination.pageIndex * pagination.pageSize\r\n ) {\r\n params.set(\r\n \"skipCount\",\r\n (pagination.pageIndex * pagination.pageSize).toString(),\r\n );\r\n }\r\n if (Number(params?.get(\"maxResultCount\")) === 10) {\r\n params.delete(\"maxResultCount\");\r\n }\r\n if (Number(params?.get(\"skipCount\")) === 0) {\r\n params.delete(\"skipCount\");\r\n }\r\n\r\n replace(`${pathname}?${params.toString()}`);\r\n }, [pagination]);\r\n\r\n return (\r\n <div className=\"flex items-center flex-wrap\">\r\n {table.getIsSomeRowsSelected() && (\r\n <div className=\"text-sm text-muted-foreground text-nowrap\">\r\n {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\r\n {table.getFilteredRowModel().rows.length} row(s) selected.\r\n </div>\r\n )}\r\n <div className=\"flex items-center flex-wrap gap-2 w-full sm:w-auto ml-auto\">\r\n <div className=\"flex items-center w-full justify-between gap-2 sm:w-auto md:mr-4\">\r\n <p className=\"text-sm font-medium\">Rows per page</p>\r\n <Select\r\n value={`${table.getState().pagination.pageSize}`}\r\n onValueChange={(value) => {\r\n table.setPageSize(Number(value));\r\n }}\r\n >\r\n <SelectTrigger className=\"h-8 w-[70px]\">\r\n <SelectValue placeholder={table.getState().pagination.pageSize} />\r\n </SelectTrigger>\r\n <SelectContent side=\"top\">\r\n {[10, 20, 30, 40, 50].map((pageSize) => (\r\n <SelectItem key={pageSize} value={`${pageSize}`}>\r\n {pageSize}\r\n </SelectItem>\r\n ))}\r\n </SelectContent>\r\n </Select>\r\n </div>\r\n <div className=\"flex items-center justify-center text-sm font-medium mr-auto\">\r\n Page {table.getState().pagination.pageIndex + 1} of{\" \"}\r\n {table.getPageCount()}\r\n </div>\r\n <div className=\"flex items-center gap-x-2\">\r\n <Button\r\n variant=\"outline\"\r\n className=\"hidden h-8 w-8 p-0 lg:flex\"\r\n onClick={() => table.setPageIndex(0)}\r\n disabled={!table.getCanPreviousPage()}\r\n >\r\n <span className=\"sr-only\">Go to first page</span>\r\n <ChevronsLeftIcon className=\"h-4 w-4\" />\r\n </Button>\r\n <Button\r\n variant=\"outline\"\r\n className=\"h-8 w-8 p-0\"\r\n onClick={() => table.previousPage()}\r\n disabled={!table.getCanPreviousPage()}\r\n >\r\n <span className=\"sr-only\">Go to previous page</span>\r\n <ChevronLeftIcon className=\"h-4 w-4\" />\r\n </Button>\r\n <Button\r\n variant=\"outline\"\r\n className=\"h-8 w-8 p-0\"\r\n onClick={() => table.nextPage()}\r\n disabled={!table.getCanNextPage()}\r\n >\r\n <span className=\"sr-only\">Go to next page</span>\r\n <ChevronRightIcon className=\"h-4 w-4\" />\r\n </Button>\r\n <Button\r\n variant=\"outline\"\r\n className=\"hidden h-8 w-8 p-0 lg:flex\"\r\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\r\n disabled={!table.getCanNextPage()}\r\n >\r\n <span className=\"sr-only\">Go to last page</span>\r\n <ChevronsRightIcon className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"mappings":"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","names":[]}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
flexRender
|
|
5
5
|
} from "@tanstack/react-table";
|
|
6
6
|
import { Fragment } from "react";
|
|
7
|
-
import { cn } from "@
|
|
7
|
+
import { cn } from "@ayasofyazilim/ui/lib/utils";
|
|
8
8
|
import {
|
|
9
9
|
Table,
|
|
10
10
|
TableBody,
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
TableHead,
|
|
13
13
|
TableHeader,
|
|
14
14
|
TableRow
|
|
15
|
-
} from "@
|
|
15
|
+
} from "@ayasofyazilim/ui/components/table";
|
|
16
16
|
import { getCommonPinningStyles } from "../utils";
|
|
17
17
|
function TanstackTablePlainTable({
|
|
18
18
|
table,
|