UNPKG

preline

Version:

Preline UI is an open-source set of prebuilt UI components based on the utility-first Tailwind CSS framework.

113 lines (107 loc) 4.5 kB
/* * HSStaticMethods * @version: 3.0.1 * @author: Preline Labs Ltd. * @license: Licensed under MIT and Preline UI Fair Use License (https://preline.co/docs/license.html) * Copyright 2024 Preline Labs Ltd. */ import { getClassProperty, afterTransition } from '../utils'; import { COLLECTIONS } from '../spa/index'; import { IStaticMethods } from '../static/interfaces'; import { ICollectionItem } from '../interfaces'; import type HSCopyMarkup from '../plugins/copy-markup'; import type HSAccordion from '../plugins/accordion'; import type HSCarousel from '../plugins/carousel'; import type HSCollapse from '../plugins/collapse'; import type HSComboBox from '../plugins/combobox'; import type HSDataTable from '../plugins/datatable'; import type HSDatepicker from '../plugins/datepicker'; import type HSDropdown from '../plugins/dropdown'; import type HSFileUpload from '../plugins/file-upload'; import type HSInputNumber from '../plugins/input-number'; import type HSLayoutSplitter from '../plugins/layout-splitter'; import type HSOverlay from '../plugins/overlay'; import type HSPinInput from '../plugins/pin-input'; import type HSRangeSlider from '../plugins/range-slider'; import type HSRemoveElement from '../plugins/remove-element'; import type HSScrollNav from '../plugins/scroll-nav'; import type HSScrollspy from '../plugins/scrollspy'; import type HSSelect from '../plugins/select'; import type HSStepper from '../plugins/stepper'; import type HSStrongPassword from '../plugins/strong-password'; import type HSTabs from '../plugins/tabs'; import type HSTextareaAutoHeight from '../plugins/textarea-auto-height'; import type HSThemeSwitch from '../plugins/theme-switch'; import type HSToggleCount from '../plugins/toggle-count'; import type HSTogglePassword from '../plugins/toggle-password'; import type HSTooltip from '../plugins/tooltip'; import type HSTreeView from '../plugins/tree-view'; declare global { interface Window { HSStaticMethods: IStaticMethods; $hsCopyMarkupCollection: ICollectionItem<HSCopyMarkup>[]; $hsAccordionCollection: ICollectionItem<HSAccordion>[]; $hsCarouselCollection: ICollectionItem<HSCarousel>[]; $hsCollapseCollection: ICollectionItem<HSCollapse>[]; $hsComboBoxCollection: ICollectionItem<HSComboBox>[]; $hsDataTableCollection: ICollectionItem<HSDataTable>[]; $hsDatepickerCollection: ICollectionItem<HSDatepicker>[]; $hsDropdownCollection: ICollectionItem<HSDropdown>[]; $hsFileUploadCollection: ICollectionItem<HSFileUpload>[]; $hsInputNumberCollection: { id: number; element: HSInputNumber }[]; $hsLayoutSplitterCollection: ICollectionItem<HSLayoutSplitter>[]; $hsOverlayCollection: ICollectionItem<HSOverlay>[]; $hsPinInputCollection: ICollectionItem<HSPinInput>[]; $hsRangeSliderCollection: ICollectionItem<HSRangeSlider>[]; $hsRemoveElementCollection: ICollectionItem<HSRemoveElement>[]; $hsScrollNavCollection: ICollectionItem<HSScrollNav>[]; $hsScrollspyCollection: ICollectionItem<HSScrollspy>[]; $hsSelectCollection: ICollectionItem<HSSelect>[]; $hsStepperCollection: ICollectionItem<HSStepper>[]; $hsStrongPasswordCollection: ICollectionItem<HSStrongPassword>[]; $hsTabsCollection: ICollectionItem<HSTabs>[]; $hsTextareaAutoHeightCollection: ICollectionItem<HSTextareaAutoHeight>[]; $hsThemeSwitchCollection: ICollectionItem<HSThemeSwitch>[]; $hsToggleCountCollection: ICollectionItem<HSToggleCount>[]; $hsTogglePasswordCollection: ICollectionItem<HSTogglePassword>[]; $hsTooltipCollection: ICollectionItem<HSTooltip>[]; $hsTreeViewCollection: ICollectionItem<HSTreeView>[]; } } const HSStaticMethods: IStaticMethods = { getClassProperty, afterTransition, autoInit(collection: string | string[] = 'all') { if (collection === 'all') { COLLECTIONS.forEach(({ fn }) => { fn?.autoInit(); }); } else { COLLECTIONS.forEach(({ key, fn }) => { if (collection.includes(key)) fn?.autoInit(); }); } }, cleanCollection(name: string | string[] = 'all') { if (name === 'all') { COLLECTIONS.forEach(({ collection }) => { if ((window as any)[collection] instanceof Array) { (window as any)[collection] = []; } }); } else { COLLECTIONS.forEach(({ key, collection }) => { if ( name.includes(key) && (window as any)[collection] instanceof Array ) { (window as any)[collection] = []; } }); } }, }; if (typeof window !== 'undefined') { window.HSStaticMethods = HSStaticMethods; } export default HSStaticMethods;