Merge branch 'v4' of https://github.com/primefaces/primevue into v4
commit
7c763b6d03
|
@ -5,7 +5,7 @@
|
|||
* @module basestyle
|
||||
*
|
||||
*/
|
||||
import { Style, StyleOptions } from '../../usestyle';
|
||||
import type { Style, StyleOptions } from '@primevue/core/usestyle';
|
||||
|
||||
export enum BaseClasses {}
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* @module basecomponentstyle
|
||||
*
|
||||
*/
|
||||
import { BaseStyle } from '../../base/style';
|
||||
import { BaseStyle } from '@primevue/core/base/style';
|
||||
|
||||
export enum BaseComponentClasses {}
|
||||
|
||||
|
|
|
@ -1,114 +1,6 @@
|
|||
import { Plugin } from 'vue';
|
||||
import { AccordionPassThroughOptions } from '../../../primevue/src/accordion/Accordion';
|
||||
import { AccordionContentPassThroughOptions } from '../../../primevue/src/accordioncontent/AccordionContent';
|
||||
import { AccordionHeaderPassThroughOptions } from '../../../primevue/src/accordionheader/AccordionHeader';
|
||||
import { AccordionPanelPassThroughOptions } from '../../../primevue/src/accordionpanel/AccordionPanel';
|
||||
import { AccordionTabPassThroughOptions } from '../../../primevue/src/accordiontab/AccordionTab';
|
||||
import { AnimateOnScrollDirectivePassThroughOptions } from '../../../primevue/src/animateonscroll/AnimateOnScroll';
|
||||
import { AutoCompletePassThroughOptions } from '../../../primevue/src/autocomplete/AutoComplete';
|
||||
import { AvatarPassThroughOptions } from '../../../primevue/src/avatar/Avatar';
|
||||
import { AvatarGroupPassThroughOptions } from '../../../primevue/src/avatargroup/AvatarGroup';
|
||||
import { BadgePassThroughOptions } from '../../../primevue/src/badge/Badge';
|
||||
import { BadgeDirectivePassThroughOptions } from '../../../primevue/src/badgedirective/BadgeDirective';
|
||||
import { BlockUIPassThroughOptions } from '../../../primevue/src/blockui/BlockUI';
|
||||
import { BreadcrumbPassThroughOptions } from '../../../primevue/src/breadcrumb/Breadcrumb';
|
||||
import { ButtonPassThroughOptions } from '../../../primevue/src/button/Button';
|
||||
import { CalendarPassThroughOptions } from '../../../primevue/src/calendar/Calendar';
|
||||
import { CardPassThroughOptions } from '../../../primevue/src/card/Card';
|
||||
import { CarouselPassThroughOptions } from '../../../primevue/src/carousel/Carousel';
|
||||
import { CascadeSelectPassThroughOptions } from '../../../primevue/src/cascadeselect/CascadeSelect';
|
||||
import { ChartPassThroughOptions } from '../../../primevue/src/chart/Chart';
|
||||
import { CheckboxPassThroughOptions } from '../../../primevue/src/checkbox/Checkbox';
|
||||
import { ChipPassThroughOptions } from '../../../primevue/src/chip/Chip';
|
||||
import { ChipsPassThroughOptions } from '../../../primevue/src/chips/Chips';
|
||||
import { ColorPickerPassThroughOptions } from '../../../primevue/src/colorpicker/ColorPicker';
|
||||
import { ColumnPassThroughOptions } from '../../../primevue/src/column/Column';
|
||||
import { ColumnGroupPassThroughOptions } from '../../../primevue/src/columngroup/ColumnGroup';
|
||||
import { ConfirmDialogPassThroughOptions } from '../../../primevue/src/confirmdialog/ConfirmDialog';
|
||||
import { ConfirmPopupPassThroughOptions } from '../../../primevue/src/confirmpopup/ConfirmPopup';
|
||||
import { ContextMenuPassThroughOptions } from '../../../primevue/src/contextmenu/ContextMenu';
|
||||
import { DataTablePassThroughOptions } from '../../../primevue/src/datatable/DataTable';
|
||||
import { DataViewPassThroughOptions } from '../../../primevue/src/dataview/DataView';
|
||||
import { DatePickerPassThroughOptions } from '../../../primevue/src/datepicker/DatePicker';
|
||||
import { DeferredContentPassThroughOptions } from '../../../primevue/src/deferredcontent/DeferredContent';
|
||||
import { DialogPassThroughOptions } from '../../../primevue/src/dialog/Dialog';
|
||||
import { DividerPassThroughOptions } from '../../../primevue/src/divider/Divider';
|
||||
import { DockPassThroughOptions } from '../../../primevue/src/dock/Dock';
|
||||
import { DrawerPassThroughOptions } from '../../../primevue/src/drawer/Drawer';
|
||||
import { DropdownPassThroughOptions } from '../../../primevue/src/dropdown/Dropdown';
|
||||
import { EditorPassThroughOptions } from '../../../primevue/src/editor/Editor';
|
||||
import { FieldsetPassThroughOptions } from '../../../primevue/src/fieldset/Fieldset';
|
||||
import { FileUploadPassThroughOptions } from '../../../primevue/src/fileupload/FileUpload';
|
||||
import { FocusTrapDirectivePassThroughOptions } from '../../../primevue/src/focustrap/FocusTrap';
|
||||
import { GalleriaPassThroughOptions } from '../../../primevue/src/galleria/Galleria';
|
||||
import { ImagePassThroughOptions } from '../../../primevue/src/image/Image';
|
||||
import { InlineMessagePassThroughOptions } from '../../../primevue/src/inlinemessage/InlineMessage';
|
||||
import { InplacePassThroughOptions } from '../../../primevue/src/inplace/Inplace';
|
||||
import { InputChipsPassThroughOptions } from '../../../primevue/src/inputchips/InputChips';
|
||||
import { InputMaskPassThroughOptions } from '../../../primevue/src/inputmask/InputMask';
|
||||
import { InputNumberPassThroughOptions } from '../../../primevue/src/inputnumber/InputNumber';
|
||||
import { InputSwitchPassThroughOptions } from '../../../primevue/src/inputswitch/InputSwitch';
|
||||
import { InputTextPassThroughOptions } from '../../../primevue/src/inputtext/InputText';
|
||||
import { KnobPassThroughOptions } from '../../../primevue/src/knob/Knob';
|
||||
import { ListboxPassThroughOptions } from '../../../primevue/src/listbox/Listbox';
|
||||
import { MegaMenuPassThroughOptions } from '../../../primevue/src/megamenu/MegaMenu';
|
||||
import { MenuPassThroughOptions } from '../../../primevue/src/menu/Menu';
|
||||
import { MenubarPassThroughOptions } from '../../../primevue/src/menubar/Menubar';
|
||||
import { MessagePassThroughOptions } from '../../../primevue/src/message/Message';
|
||||
import { MultiSelectPassThroughOptions } from '../../../primevue/src/multiselect/MultiSelect';
|
||||
import { OrderListPassThroughOptions } from '../../../primevue/src/orderlist/OrderList';
|
||||
import { OrganizationChartPassThroughOptions } from '../../../primevue/src/organizationchart/OrganizationChart';
|
||||
import { OverlayPanelPassThroughOptions } from '../../../primevue/src/overlaypanel/OverlayPanel';
|
||||
import { PaginatorPassThroughOptions } from '../../../primevue/src/paginator/Paginator';
|
||||
import { PanelPassThroughOptions } from '../../../primevue/src/panel/Panel';
|
||||
import { PanelMenuPassThroughOptions } from '../../../primevue/src/panelmenu/PanelMenu';
|
||||
import { PassThroughOptions } from '../../../primevue/src/passthrough';
|
||||
import { PasswordPassThroughOptions } from '../../../primevue/src/password/Password';
|
||||
import { PickListPassThroughOptions } from '../../../primevue/src/picklist/PickList';
|
||||
import { PopoverPassThroughOptions } from '../../../primevue/src/popover/Popover';
|
||||
import { ProgressBarPassThroughOptions } from '../../../primevue/src/progressbar/ProgressBar';
|
||||
import { ProgressSpinnerPassThroughOptions } from '../../../primevue/src/progressspinner/ProgressSpinner';
|
||||
import { RadioButtonPassThroughOptions } from '../../../primevue/src/radiobutton/RadioButton';
|
||||
import { RatingPassThroughOptions } from '../../../primevue/src/rating/Rating';
|
||||
import { RippleDirectivePassThroughOptions } from '../../../primevue/src/ripple/Ripple';
|
||||
import { RowPassThroughOptions } from '../../../primevue/src/row/Row';
|
||||
import { ScrollPanelPassThroughOptions } from '../../../primevue/src/scrollpanel/ScrollPanel';
|
||||
import { ScrollTopPassThroughOptions } from '../../../primevue/src/scrolltop/ScrollTop';
|
||||
import { SelectPassThroughOptions } from '../../../primevue/src/select/Select';
|
||||
import { SelectButtonPassThroughOptions } from '../../../primevue/src/selectbutton/SelectButton';
|
||||
import { SidebarPassThroughOptions } from '../../../primevue/src/sidebar/Sidebar';
|
||||
import { SkeletonPassThroughOptions } from '../../../primevue/src/skeleton/Skeleton';
|
||||
import { SliderPassThroughOptions } from '../../../primevue/src/slider/Slider';
|
||||
import { SpeedDialPassThroughOptions } from '../../../primevue/src/speeddial/SpeedDial';
|
||||
import { SplitButtonPassThroughOptions } from '../../../primevue/src/splitbutton/SplitButton';
|
||||
import { SplitterPassThroughOptions } from '../../../primevue/src/splitter/Splitter';
|
||||
import { SplitterPanelPassThroughOptions } from '../../../primevue/src/splitterpanel/SplitterPanel';
|
||||
import { StepsPassThroughOptions } from '../../../primevue/src/steps/Steps';
|
||||
import { StyleClassDirectivePassThroughOptions } from '../../../primevue/src/styleclass/StyleClass';
|
||||
import { TabPassThroughOptions } from '../../../primevue/src/tab/Tab';
|
||||
import { TabListPassThroughOptions } from '../../../primevue/src/tablist/TabList';
|
||||
import { TabMenuPassThroughOptions } from '../../../primevue/src/tabmenu/TabMenu';
|
||||
import { TabPanelPassThroughOptions } from '../../../primevue/src/tabpanel/TabPanel';
|
||||
import { TabPanelsPassThroughOptions } from '../../../primevue/src/tabpanels/TabPanels';
|
||||
import { TabsPassThroughOptions } from '../../../primevue/src/tabs/Tabs';
|
||||
import { TabViewPassThroughOptions } from '../../../primevue/src/tabview/TabView';
|
||||
import { TagPassThroughOptions } from '../../../primevue/src/tag/Tag';
|
||||
import { TerminalPassThroughOptions } from '../../../primevue/src/terminal/Terminal';
|
||||
import { TextareaPassThroughOptions } from '../../../primevue/src/textarea/Textarea';
|
||||
import { TieredMenuPassThroughOptions } from '../../../primevue/src/tieredmenu/TieredMenu';
|
||||
import { TimelinePassThroughOptions } from '../../../primevue/src/timeline/Timeline';
|
||||
import { ToastPassThroughOptions } from '../../../primevue/src/toast/Toast';
|
||||
import { ToggleButtonPassThroughOptions } from '../../../primevue/src/togglebutton/ToggleButton';
|
||||
import { ToggleSwitchPassThroughOptions } from '../../../primevue/src/toggleswitch/ToggleSwitch';
|
||||
import { ToolbarPassThroughOptions } from '../../../primevue/src/toolbar/Toolbar';
|
||||
import { TooltipDirectivePassThroughOptions } from '../../../primevue/src/tooltip/Tooltip';
|
||||
import { TreePassThroughOptions } from '../../../primevue/src/tree/Tree';
|
||||
import { TreeSelectPassThroughOptions } from '../../../primevue/src/treeselect/TreeSelect';
|
||||
import { TreeTablePassThroughOptions } from '../../../primevue/src/treetable/TreeTable';
|
||||
import { DefaultPassThrough, PassThrough } from '../../../primevue/src/ts-helpers';
|
||||
import { VirtualScrollerPassThroughOptions } from '../../../primevue/src/virtualscroller/VirtualScroller';
|
||||
|
||||
export interface PrimeVueConfiguration {
|
||||
export interface PrimeVueConfiguration<PrimeVuePTOptions = any, PassThroughOptions = any> {
|
||||
ripple?: boolean;
|
||||
/**
|
||||
* @deprecated since v4.0. Use 'inputVariant' instead.
|
||||
|
@ -120,7 +12,7 @@ export interface PrimeVueConfiguration {
|
|||
zIndex?: PrimeVueZIndexOptions;
|
||||
theme?: any;
|
||||
unstyled?: boolean;
|
||||
pt?: PassThrough<PrimeVuePTOptions>;
|
||||
pt?: PrimeVuePTOptions;
|
||||
ptOptions?: PassThroughOptions;
|
||||
csp?: PrimeVueCSPOptions;
|
||||
}
|
||||
|
@ -138,145 +30,6 @@ export interface PrimeVueCSPOptions {
|
|||
nonce?: string;
|
||||
}
|
||||
|
||||
export interface PrimeVuePTOptions {
|
||||
accordion?: DefaultPassThrough<AccordionPassThroughOptions>;
|
||||
accordionpanel?: DefaultPassThrough<AccordionPanelPassThroughOptions>;
|
||||
accordionheader?: DefaultPassThrough<AccordionHeaderPassThroughOptions>;
|
||||
accordioncontent?: DefaultPassThrough<AccordionContentPassThroughOptions>;
|
||||
/**
|
||||
* @deprecated since v4. Use the new structure of Accordion instead.
|
||||
*/
|
||||
accordiontab?: DefaultPassThrough<AccordionTabPassThroughOptions>;
|
||||
autocomplete?: DefaultPassThrough<AutoCompletePassThroughOptions>;
|
||||
avatar?: DefaultPassThrough<AvatarPassThroughOptions>;
|
||||
avatargroup?: DefaultPassThrough<AvatarGroupPassThroughOptions>;
|
||||
badge?: DefaultPassThrough<BadgePassThroughOptions>;
|
||||
blockui?: DefaultPassThrough<BlockUIPassThroughOptions>;
|
||||
breadcrumb?: DefaultPassThrough<BreadcrumbPassThroughOptions>;
|
||||
button?: DefaultPassThrough<ButtonPassThroughOptions>;
|
||||
/**
|
||||
* @deprecated since v4. Use the new structure of DatePicker instead.
|
||||
*/
|
||||
calendar?: DefaultPassThrough<CalendarPassThroughOptions>;
|
||||
card?: DefaultPassThrough<CardPassThroughOptions>;
|
||||
carousel?: DefaultPassThrough<CarouselPassThroughOptions>;
|
||||
cascadeselect?: DefaultPassThrough<CascadeSelectPassThroughOptions>;
|
||||
chart?: DefaultPassThrough<ChartPassThroughOptions>;
|
||||
checkbox?: DefaultPassThrough<CheckboxPassThroughOptions>;
|
||||
chip?: DefaultPassThrough<ChipPassThroughOptions>;
|
||||
/**
|
||||
* @deprecated since v4. Use the new structure of InputChips instead.
|
||||
*/
|
||||
chips?: DefaultPassThrough<ChipsPassThroughOptions>;
|
||||
colorpicker?: DefaultPassThrough<ColorPickerPassThroughOptions>;
|
||||
column?: DefaultPassThrough<ColumnPassThroughOptions>;
|
||||
columngroup?: DefaultPassThrough<ColumnGroupPassThroughOptions>;
|
||||
confirmdialog?: DefaultPassThrough<ConfirmDialogPassThroughOptions>;
|
||||
confirmpopup?: DefaultPassThrough<ConfirmPopupPassThroughOptions>;
|
||||
contextmenu?: DefaultPassThrough<ContextMenuPassThroughOptions>;
|
||||
datatable?: DefaultPassThrough<DataTablePassThroughOptions>;
|
||||
dataview?: DefaultPassThrough<DataViewPassThroughOptions>;
|
||||
datepicker?: DefaultPassThrough<DatePickerPassThroughOptions>;
|
||||
deferredcontent?: DefaultPassThrough<DeferredContentPassThroughOptions>;
|
||||
divider?: DefaultPassThrough<DividerPassThroughOptions>;
|
||||
dialog?: DefaultPassThrough<DialogPassThroughOptions>;
|
||||
dock?: DefaultPassThrough<DockPassThroughOptions>;
|
||||
drawer?: DefaultPassThrough<DrawerPassThroughOptions>;
|
||||
/**
|
||||
* @deprecated since v4. Use the new structure of Select instead.
|
||||
*/
|
||||
dropdown?: DefaultPassThrough<DropdownPassThroughOptions>;
|
||||
dynamicdialog?: DefaultPassThrough<DialogPassThroughOptions>;
|
||||
editor?: DefaultPassThrough<EditorPassThroughOptions>;
|
||||
fieldset?: DefaultPassThrough<FieldsetPassThroughOptions>;
|
||||
fileupload?: DefaultPassThrough<FileUploadPassThroughOptions>;
|
||||
galleria?: DefaultPassThrough<GalleriaPassThroughOptions>;
|
||||
image?: DefaultPassThrough<ImagePassThroughOptions>;
|
||||
inlinemessage?: DefaultPassThrough<InlineMessagePassThroughOptions>;
|
||||
inplace?: DefaultPassThrough<InplacePassThroughOptions>;
|
||||
inputchips?: DefaultPassThrough<InputChipsPassThroughOptions>;
|
||||
inputmask?: DefaultPassThrough<InputMaskPassThroughOptions>;
|
||||
inputnumber?: DefaultPassThrough<InputNumberPassThroughOptions>;
|
||||
/**
|
||||
* @deprecated since v4. Use the new structure of ToggleSwitch instead.
|
||||
*/
|
||||
inputswitch?: DefaultPassThrough<InputSwitchPassThroughOptions>;
|
||||
inputtext?: DefaultPassThrough<InputTextPassThroughOptions>;
|
||||
knob?: DefaultPassThrough<KnobPassThroughOptions>;
|
||||
listbox?: DefaultPassThrough<ListboxPassThroughOptions>;
|
||||
megamenu?: DefaultPassThrough<MegaMenuPassThroughOptions>;
|
||||
menu?: DefaultPassThrough<MenuPassThroughOptions>;
|
||||
menubar?: DefaultPassThrough<MenubarPassThroughOptions>;
|
||||
message?: DefaultPassThrough<MessagePassThroughOptions>;
|
||||
multiselect?: DefaultPassThrough<MultiSelectPassThroughOptions>;
|
||||
orderlist?: DefaultPassThrough<OrderListPassThroughOptions>;
|
||||
organizationchart?: DefaultPassThrough<OrganizationChartPassThroughOptions>;
|
||||
/**
|
||||
* @deprecated since v4. Use the new structure of Popover instead.
|
||||
*/
|
||||
overlaypanel?: DefaultPassThrough<OverlayPanelPassThroughOptions>;
|
||||
paginator?: DefaultPassThrough<PaginatorPassThroughOptions>;
|
||||
panel?: DefaultPassThrough<PanelPassThroughOptions>;
|
||||
panelmenu?: DefaultPassThrough<PanelMenuPassThroughOptions>;
|
||||
password?: DefaultPassThrough<PasswordPassThroughOptions>;
|
||||
picklist?: DefaultPassThrough<PickListPassThroughOptions>;
|
||||
popover?: DefaultPassThrough<PopoverPassThroughOptions>;
|
||||
progressbar?: DefaultPassThrough<ProgressBarPassThroughOptions>;
|
||||
progressspinner?: DefaultPassThrough<ProgressSpinnerPassThroughOptions>;
|
||||
radiobutton?: DefaultPassThrough<RadioButtonPassThroughOptions>;
|
||||
rating?: DefaultPassThrough<RatingPassThroughOptions>;
|
||||
row?: DefaultPassThrough<RowPassThroughOptions>;
|
||||
scrollpanel?: DefaultPassThrough<ScrollPanelPassThroughOptions>;
|
||||
scrolltop?: DefaultPassThrough<ScrollTopPassThroughOptions>;
|
||||
/**
|
||||
* @deprecated since v4. Use the new structure of Drawer instead.
|
||||
*/
|
||||
sidebar?: DefaultPassThrough<SidebarPassThroughOptions>;
|
||||
skeleton?: DefaultPassThrough<SkeletonPassThroughOptions>;
|
||||
slider?: DefaultPassThrough<SliderPassThroughOptions>;
|
||||
speeddial?: DefaultPassThrough<SpeedDialPassThroughOptions>;
|
||||
selectbutton?: DefaultPassThrough<SelectButtonPassThroughOptions>;
|
||||
select?: DefaultPassThrough<SelectPassThroughOptions>;
|
||||
splitbutton?: DefaultPassThrough<SplitButtonPassThroughOptions>;
|
||||
splitter?: DefaultPassThrough<SplitterPassThroughOptions>;
|
||||
splitterpanel?: DefaultPassThrough<SplitterPanelPassThroughOptions>;
|
||||
steps?: DefaultPassThrough<StepsPassThroughOptions>;
|
||||
tabmenu?: DefaultPassThrough<TabMenuPassThroughOptions>;
|
||||
tabs?: DefaultPassThrough<TabsPassThroughOptions>;
|
||||
tablist?: DefaultPassThrough<TabListPassThroughOptions>;
|
||||
tab?: DefaultPassThrough<TabPassThroughOptions>;
|
||||
tabpanels?: DefaultPassThrough<TabPanelsPassThroughOptions>;
|
||||
tabpanel?: DefaultPassThrough<TabPanelPassThroughOptions>;
|
||||
/**
|
||||
* @deprecated since v4. Use tabs instead.
|
||||
*/
|
||||
tabview?: DefaultPassThrough<TabViewPassThroughOptions>;
|
||||
tag?: DefaultPassThrough<TagPassThroughOptions>;
|
||||
terminal?: DefaultPassThrough<TerminalPassThroughOptions>;
|
||||
textarea?: DefaultPassThrough<TextareaPassThroughOptions>;
|
||||
tieredmenu?: DefaultPassThrough<TieredMenuPassThroughOptions>;
|
||||
timeline?: DefaultPassThrough<TimelinePassThroughOptions>;
|
||||
toast?: DefaultPassThrough<ToastPassThroughOptions>;
|
||||
togglebutton?: DefaultPassThrough<ToggleButtonPassThroughOptions>;
|
||||
toggleswitch?: DefaultPassThrough<ToggleSwitchPassThroughOptions>;
|
||||
toolbar?: DefaultPassThrough<ToolbarPassThroughOptions>;
|
||||
tree?: DefaultPassThrough<TreePassThroughOptions>;
|
||||
treeselect?: DefaultPassThrough<TreeSelectPassThroughOptions>;
|
||||
treetable?: DefaultPassThrough<TreeTablePassThroughOptions>;
|
||||
virtualscroller?: DefaultPassThrough<VirtualScrollerPassThroughOptions>;
|
||||
directives?: {
|
||||
badge?: BadgeDirectivePassThroughOptions;
|
||||
tooltip?: TooltipDirectivePassThroughOptions;
|
||||
styleclass?: StyleClassDirectivePassThroughOptions;
|
||||
focustrap?: FocusTrapDirectivePassThroughOptions;
|
||||
ripple?: RippleDirectivePassThroughOptions;
|
||||
animate?: AnimateOnScrollDirectivePassThroughOptions;
|
||||
};
|
||||
global?: {
|
||||
css?: ((options: any) => string | undefined) | string | undefined;
|
||||
};
|
||||
}
|
||||
|
||||
export interface PrimeVueLocaleAriaOptions {
|
||||
trueLabel?: string;
|
||||
falseLabel?: string;
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
export interface PrimeVueService {
|
||||
on(type: string, fn: any): void;
|
||||
emit(type: string, evt?: any): void;
|
||||
off(type: string, fn: any): void;
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"main": "./PrimeVueService.js",
|
||||
"module": "./PrimeVueService.js"
|
||||
"module": "./PrimeVueService.js",
|
||||
"types": "./PrimeVueService.d.ts"
|
||||
}
|
||||
|
|
|
@ -13,7 +13,12 @@
|
|||
"resolveJsonModule": true,
|
||||
"isolatedModules": false,
|
||||
"jsx": "preserve",
|
||||
"incremental": true
|
||||
"incremental": true,
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"@primevue/core/*": ["./src/*"],
|
||||
"primevue/*": ["../../packages/primevue/src/*"]
|
||||
}
|
||||
},
|
||||
"include": ["**/*.ts", "src/*"],
|
||||
"exclude": ["node_modules", "dist"]
|
||||
|
|
|
@ -312,8 +312,6 @@
|
|||
"./usestyle/style": "./src/usestyle/style/UseStyleStyle.js",
|
||||
"./usetoast": "./src/usetoast/UseToast.js",
|
||||
"./usetoast/style": "./src/usetoast/style/UseToastStyle.js",
|
||||
"./utils": "./src/utils/Utils.js",
|
||||
"./utils/style": "./src/utils/style/UtilsStyle.js",
|
||||
"./virtualscroller": "./src/virtualscroller/VirtualScroller.vue",
|
||||
"./virtualscroller/style": "./src/virtualscroller/style/VirtualScrollerStyle.js",
|
||||
"./*": "./*"
|
||||
|
|
|
@ -1,142 +1,116 @@
|
|||
import { Plugin } from 'vue';
|
||||
import { AccordionPassThroughOptions } from '../../../primevue/src/accordion/Accordion';
|
||||
import { AccordionContentPassThroughOptions } from '../../../primevue/src/accordioncontent/AccordionContent';
|
||||
import { AccordionHeaderPassThroughOptions } from '../../../primevue/src/accordionheader/AccordionHeader';
|
||||
import { AccordionPanelPassThroughOptions } from '../../../primevue/src/accordionpanel/AccordionPanel';
|
||||
import { AccordionTabPassThroughOptions } from '../../../primevue/src/accordiontab/AccordionTab';
|
||||
import { AnimateOnScrollDirectivePassThroughOptions } from '../../../primevue/src/animateonscroll/AnimateOnScroll';
|
||||
import { AutoCompletePassThroughOptions } from '../../../primevue/src/autocomplete/AutoComplete';
|
||||
import { AvatarPassThroughOptions } from '../../../primevue/src/avatar/Avatar';
|
||||
import { AvatarGroupPassThroughOptions } from '../../../primevue/src/avatargroup/AvatarGroup';
|
||||
import { BadgePassThroughOptions } from '../../../primevue/src/badge/Badge';
|
||||
import { BadgeDirectivePassThroughOptions } from '../../../primevue/src/badgedirective/BadgeDirective';
|
||||
import { BlockUIPassThroughOptions } from '../../../primevue/src/blockui/BlockUI';
|
||||
import { BreadcrumbPassThroughOptions } from '../../../primevue/src/breadcrumb/Breadcrumb';
|
||||
import { ButtonPassThroughOptions } from '../../../primevue/src/button/Button';
|
||||
import { CalendarPassThroughOptions } from '../../../primevue/src/calendar/Calendar';
|
||||
import { CardPassThroughOptions } from '../../../primevue/src/card/Card';
|
||||
import { CarouselPassThroughOptions } from '../../../primevue/src/carousel/Carousel';
|
||||
import { CascadeSelectPassThroughOptions } from '../../../primevue/src/cascadeselect/CascadeSelect';
|
||||
import { ChartPassThroughOptions } from '../../../primevue/src/chart/Chart';
|
||||
import { CheckboxPassThroughOptions } from '../../../primevue/src/checkbox/Checkbox';
|
||||
import { ChipPassThroughOptions } from '../../../primevue/src/chip/Chip';
|
||||
import { ChipsPassThroughOptions } from '../../../primevue/src/chips/Chips';
|
||||
import { ColorPickerPassThroughOptions } from '../../../primevue/src/colorpicker/ColorPicker';
|
||||
import { ColumnPassThroughOptions } from '../../../primevue/src/column/Column';
|
||||
import { ColumnGroupPassThroughOptions } from '../../../primevue/src/columngroup/ColumnGroup';
|
||||
import { ConfirmDialogPassThroughOptions } from '../../../primevue/src/confirmdialog/ConfirmDialog';
|
||||
import { ConfirmPopupPassThroughOptions } from '../../../primevue/src/confirmpopup/ConfirmPopup';
|
||||
import { ContextMenuPassThroughOptions } from '../../../primevue/src/contextmenu/ContextMenu';
|
||||
import { DataTablePassThroughOptions } from '../../../primevue/src/datatable/DataTable';
|
||||
import { DataViewPassThroughOptions } from '../../../primevue/src/dataview/DataView';
|
||||
import { DatePickerPassThroughOptions } from '../../../primevue/src/datepicker/DatePicker';
|
||||
import { DeferredContentPassThroughOptions } from '../../../primevue/src/deferredcontent/DeferredContent';
|
||||
import { DialogPassThroughOptions } from '../../../primevue/src/dialog/Dialog';
|
||||
import { DividerPassThroughOptions } from '../../../primevue/src/divider/Divider';
|
||||
import { DockPassThroughOptions } from '../../../primevue/src/dock/Dock';
|
||||
import { DrawerPassThroughOptions } from '../../../primevue/src/drawer/Drawer';
|
||||
import { DropdownPassThroughOptions } from '../../../primevue/src/dropdown/Dropdown';
|
||||
import { EditorPassThroughOptions } from '../../../primevue/src/editor/Editor';
|
||||
import { FieldsetPassThroughOptions } from '../../../primevue/src/fieldset/Fieldset';
|
||||
import { FileUploadPassThroughOptions } from '../../../primevue/src/fileupload/FileUpload';
|
||||
import { FocusTrapDirectivePassThroughOptions } from '../../../primevue/src/focustrap/FocusTrap';
|
||||
import { GalleriaPassThroughOptions } from '../../../primevue/src/galleria/Galleria';
|
||||
import { ImagePassThroughOptions } from '../../../primevue/src/image/Image';
|
||||
import { InlineMessagePassThroughOptions } from '../../../primevue/src/inlinemessage/InlineMessage';
|
||||
import { InplacePassThroughOptions } from '../../../primevue/src/inplace/Inplace';
|
||||
import { InputChipsPassThroughOptions } from '../../../primevue/src/inputchips/InputChips';
|
||||
import { InputMaskPassThroughOptions } from '../../../primevue/src/inputmask/InputMask';
|
||||
import { InputNumberPassThroughOptions } from '../../../primevue/src/inputnumber/InputNumber';
|
||||
import { InputSwitchPassThroughOptions } from '../../../primevue/src/inputswitch/InputSwitch';
|
||||
import { InputTextPassThroughOptions } from '../../../primevue/src/inputtext/InputText';
|
||||
import { KnobPassThroughOptions } from '../../../primevue/src/knob/Knob';
|
||||
import { ListboxPassThroughOptions } from '../../../primevue/src/listbox/Listbox';
|
||||
import { MegaMenuPassThroughOptions } from '../../../primevue/src/megamenu/MegaMenu';
|
||||
import { MenuPassThroughOptions } from '../../../primevue/src/menu/Menu';
|
||||
import { MenubarPassThroughOptions } from '../../../primevue/src/menubar/Menubar';
|
||||
import { MessagePassThroughOptions } from '../../../primevue/src/message/Message';
|
||||
import { MultiSelectPassThroughOptions } from '../../../primevue/src/multiselect/MultiSelect';
|
||||
import { OrderListPassThroughOptions } from '../../../primevue/src/orderlist/OrderList';
|
||||
import { OrganizationChartPassThroughOptions } from '../../../primevue/src/organizationchart/OrganizationChart';
|
||||
import { OverlayPanelPassThroughOptions } from '../../../primevue/src/overlaypanel/OverlayPanel';
|
||||
import { PaginatorPassThroughOptions } from '../../../primevue/src/paginator/Paginator';
|
||||
import { PanelPassThroughOptions } from '../../../primevue/src/panel/Panel';
|
||||
import { PanelMenuPassThroughOptions } from '../../../primevue/src/panelmenu/PanelMenu';
|
||||
import { PassThroughOptions } from '../../../primevue/src/passthrough';
|
||||
import { PasswordPassThroughOptions } from '../../../primevue/src/password/Password';
|
||||
import { PickListPassThroughOptions } from '../../../primevue/src/picklist/PickList';
|
||||
import { PopoverPassThroughOptions } from '../../../primevue/src/popover/Popover';
|
||||
import { ProgressBarPassThroughOptions } from '../../../primevue/src/progressbar/ProgressBar';
|
||||
import { ProgressSpinnerPassThroughOptions } from '../../../primevue/src/progressspinner/ProgressSpinner';
|
||||
import { RadioButtonPassThroughOptions } from '../../../primevue/src/radiobutton/RadioButton';
|
||||
import { RatingPassThroughOptions } from '../../../primevue/src/rating/Rating';
|
||||
import { RippleDirectivePassThroughOptions } from '../../../primevue/src/ripple/Ripple';
|
||||
import { RowPassThroughOptions } from '../../../primevue/src/row/Row';
|
||||
import { ScrollPanelPassThroughOptions } from '../../../primevue/src/scrollpanel/ScrollPanel';
|
||||
import { ScrollTopPassThroughOptions } from '../../../primevue/src/scrolltop/ScrollTop';
|
||||
import { SelectPassThroughOptions } from '../../../primevue/src/select/Select';
|
||||
import { SelectButtonPassThroughOptions } from '../../../primevue/src/selectbutton/SelectButton';
|
||||
import { SidebarPassThroughOptions } from '../../../primevue/src/sidebar/Sidebar';
|
||||
import { SkeletonPassThroughOptions } from '../../../primevue/src/skeleton/Skeleton';
|
||||
import { SliderPassThroughOptions } from '../../../primevue/src/slider/Slider';
|
||||
import { SpeedDialPassThroughOptions } from '../../../primevue/src/speeddial/SpeedDial';
|
||||
import { SplitButtonPassThroughOptions } from '../../../primevue/src/splitbutton/SplitButton';
|
||||
import { SplitterPassThroughOptions } from '../../../primevue/src/splitter/Splitter';
|
||||
import { SplitterPanelPassThroughOptions } from '../../../primevue/src/splitterpanel/SplitterPanel';
|
||||
import { StepsPassThroughOptions } from '../../../primevue/src/steps/Steps';
|
||||
import { StyleClassDirectivePassThroughOptions } from '../../../primevue/src/styleclass/StyleClass';
|
||||
import { TabPassThroughOptions } from '../../../primevue/src/tab/Tab';
|
||||
import { TabListPassThroughOptions } from '../../../primevue/src/tablist/TabList';
|
||||
import { TabMenuPassThroughOptions } from '../../../primevue/src/tabmenu/TabMenu';
|
||||
import { TabPanelPassThroughOptions } from '../../../primevue/src/tabpanel/TabPanel';
|
||||
import { TabPanelsPassThroughOptions } from '../../../primevue/src/tabpanels/TabPanels';
|
||||
import { TabsPassThroughOptions } from '../../../primevue/src/tabs/Tabs';
|
||||
import { TabViewPassThroughOptions } from '../../../primevue/src/tabview/TabView';
|
||||
import { TagPassThroughOptions } from '../../../primevue/src/tag/Tag';
|
||||
import { TerminalPassThroughOptions } from '../../../primevue/src/terminal/Terminal';
|
||||
import { TextareaPassThroughOptions } from '../../../primevue/src/textarea/Textarea';
|
||||
import { TieredMenuPassThroughOptions } from '../../../primevue/src/tieredmenu/TieredMenu';
|
||||
import { TimelinePassThroughOptions } from '../../../primevue/src/timeline/Timeline';
|
||||
import { ToastPassThroughOptions } from '../../../primevue/src/toast/Toast';
|
||||
import { ToggleButtonPassThroughOptions } from '../../../primevue/src/togglebutton/ToggleButton';
|
||||
import { ToggleSwitchPassThroughOptions } from '../../../primevue/src/toggleswitch/ToggleSwitch';
|
||||
import { ToolbarPassThroughOptions } from '../../../primevue/src/toolbar/Toolbar';
|
||||
import { TooltipDirectivePassThroughOptions } from '../../../primevue/src/tooltip/Tooltip';
|
||||
import { TreePassThroughOptions } from '../../../primevue/src/tree/Tree';
|
||||
import { TreeSelectPassThroughOptions } from '../../../primevue/src/treeselect/TreeSelect';
|
||||
import { TreeTablePassThroughOptions } from '../../../primevue/src/treetable/TreeTable';
|
||||
import { DefaultPassThrough, PassThrough } from '../../../primevue/src/ts-helpers';
|
||||
import { VirtualScrollerPassThroughOptions } from '../../../primevue/src/virtualscroller/VirtualScroller';
|
||||
import type { PrimeVueConfiguration as PrimeVueCoreConfiguration } from '@primevue/core/config';
|
||||
import type { AccordionPassThroughOptions } from 'primevue/accordion';
|
||||
import type { AccordionContentPassThroughOptions } from 'primevue/accordioncontent';
|
||||
import type { AccordionHeaderPassThroughOptions } from 'primevue/accordionheader';
|
||||
import type { AccordionPanelPassThroughOptions } from 'primevue/accordionpanel';
|
||||
import type { AccordionTabPassThroughOptions } from 'primevue/accordiontab';
|
||||
import type { AnimateOnScrollDirectivePassThroughOptions } from 'primevue/animateonscroll';
|
||||
import type { AutoCompletePassThroughOptions } from 'primevue/autocomplete';
|
||||
import type { AvatarPassThroughOptions } from 'primevue/avatar';
|
||||
import type { AvatarGroupPassThroughOptions } from 'primevue/avatargroup';
|
||||
import type { BadgePassThroughOptions } from 'primevue/badge';
|
||||
import type { BadgeDirectivePassThroughOptions } from 'primevue/badgedirective';
|
||||
import type { BlockUIPassThroughOptions } from 'primevue/blockui';
|
||||
import type { BreadcrumbPassThroughOptions } from 'primevue/breadcrumb';
|
||||
import type { ButtonPassThroughOptions } from 'primevue/button';
|
||||
import type { CalendarPassThroughOptions } from 'primevue/calendar';
|
||||
import type { CardPassThroughOptions } from 'primevue/card';
|
||||
import type { CarouselPassThroughOptions } from 'primevue/carousel';
|
||||
import type { CascadeSelectPassThroughOptions } from 'primevue/cascadeselect';
|
||||
import type { ChartPassThroughOptions } from 'primevue/chart';
|
||||
import type { CheckboxPassThroughOptions } from 'primevue/checkbox';
|
||||
import type { ChipPassThroughOptions } from 'primevue/chip';
|
||||
import type { ChipsPassThroughOptions } from 'primevue/chips';
|
||||
import type { ColorPickerPassThroughOptions } from 'primevue/colorpicker';
|
||||
import type { ColumnPassThroughOptions } from 'primevue/column';
|
||||
import type { ColumnGroupPassThroughOptions } from 'primevue/columngroup';
|
||||
import type { ConfirmDialogPassThroughOptions } from 'primevue/confirmdialog';
|
||||
import type { ConfirmPopupPassThroughOptions } from 'primevue/confirmpopup';
|
||||
import type { ContextMenuPassThroughOptions } from 'primevue/contextmenu';
|
||||
import type { DataTablePassThroughOptions } from 'primevue/datatable';
|
||||
import type { DataViewPassThroughOptions } from 'primevue/dataview';
|
||||
import type { DatePickerPassThroughOptions } from 'primevue/datepicker';
|
||||
import type { DeferredContentPassThroughOptions } from 'primevue/deferredcontent';
|
||||
import type { DialogPassThroughOptions } from 'primevue/dialog';
|
||||
import type { DividerPassThroughOptions } from 'primevue/divider';
|
||||
import type { DockPassThroughOptions } from 'primevue/dock';
|
||||
import type { DrawerPassThroughOptions } from 'primevue/drawer';
|
||||
import type { DropdownPassThroughOptions } from 'primevue/dropdown';
|
||||
import type { EditorPassThroughOptions } from 'primevue/editor';
|
||||
import type { FieldsetPassThroughOptions } from 'primevue/fieldset';
|
||||
import type { FileUploadPassThroughOptions } from 'primevue/fileupload';
|
||||
import type { FocusTrapDirectivePassThroughOptions } from 'primevue/focustrap';
|
||||
import type { GalleriaPassThroughOptions } from 'primevue/galleria';
|
||||
import type { ImagePassThroughOptions } from 'primevue/image';
|
||||
import type { InlineMessagePassThroughOptions } from 'primevue/inlinemessage';
|
||||
import type { InplacePassThroughOptions } from 'primevue/inplace';
|
||||
import type { InputChipsPassThroughOptions } from 'primevue/inputchips';
|
||||
import type { InputMaskPassThroughOptions } from 'primevue/inputmask';
|
||||
import type { InputNumberPassThroughOptions } from 'primevue/inputnumber';
|
||||
import type { InputSwitchPassThroughOptions } from 'primevue/inputswitch';
|
||||
import type { InputTextPassThroughOptions } from 'primevue/inputtext';
|
||||
import type { KnobPassThroughOptions } from 'primevue/knob';
|
||||
import type { ListboxPassThroughOptions } from 'primevue/listbox';
|
||||
import type { MegaMenuPassThroughOptions } from 'primevue/megamenu';
|
||||
import type { MenuPassThroughOptions } from 'primevue/menu';
|
||||
import type { MenubarPassThroughOptions } from 'primevue/menubar';
|
||||
import type { MessagePassThroughOptions } from 'primevue/message';
|
||||
import type { MultiSelectPassThroughOptions } from 'primevue/multiselect';
|
||||
import type { OrderListPassThroughOptions } from 'primevue/orderlist';
|
||||
import type { OrganizationChartPassThroughOptions } from 'primevue/organizationchart';
|
||||
import type { OverlayPanelPassThroughOptions } from 'primevue/overlaypanel';
|
||||
import type { PaginatorPassThroughOptions } from 'primevue/paginator';
|
||||
import type { PanelPassThroughOptions } from 'primevue/panel';
|
||||
import type { PanelMenuPassThroughOptions } from 'primevue/panelmenu';
|
||||
import type { PassThroughOptions } from 'primevue/passthrough';
|
||||
import type { PasswordPassThroughOptions } from 'primevue/password';
|
||||
import type { PickListPassThroughOptions } from 'primevue/picklist';
|
||||
import type { PopoverPassThroughOptions } from 'primevue/popover';
|
||||
import type { ProgressBarPassThroughOptions } from 'primevue/progressbar';
|
||||
import type { ProgressSpinnerPassThroughOptions } from 'primevue/progressspinner';
|
||||
import type { RadioButtonPassThroughOptions } from 'primevue/radiobutton';
|
||||
import type { RatingPassThroughOptions } from 'primevue/rating';
|
||||
import type { RippleDirectivePassThroughOptions } from 'primevue/ripple';
|
||||
import type { RowPassThroughOptions } from 'primevue/row';
|
||||
import type { ScrollPanelPassThroughOptions } from 'primevue/scrollpanel';
|
||||
import type { ScrollTopPassThroughOptions } from 'primevue/scrolltop';
|
||||
import type { SelectPassThroughOptions } from 'primevue/select';
|
||||
import type { SelectButtonPassThroughOptions } from 'primevue/selectbutton';
|
||||
import type { SidebarPassThroughOptions } from 'primevue/sidebar';
|
||||
import type { SkeletonPassThroughOptions } from 'primevue/skeleton';
|
||||
import type { SliderPassThroughOptions } from 'primevue/slider';
|
||||
import type { SpeedDialPassThroughOptions } from 'primevue/speeddial';
|
||||
import type { SplitButtonPassThroughOptions } from 'primevue/splitbutton';
|
||||
import type { SplitterPassThroughOptions } from 'primevue/splitter';
|
||||
import type { SplitterPanelPassThroughOptions } from 'primevue/splitterpanel';
|
||||
import type { StepsPassThroughOptions } from 'primevue/steps';
|
||||
import type { StyleClassDirectivePassThroughOptions } from 'primevue/styleclass';
|
||||
import type { TabPassThroughOptions } from 'primevue/tab';
|
||||
import type { TabListPassThroughOptions } from 'primevue/tablist';
|
||||
import type { TabMenuPassThroughOptions } from 'primevue/tabmenu';
|
||||
import type { TabPanelPassThroughOptions } from 'primevue/tabpanel';
|
||||
import type { TabPanelsPassThroughOptions } from 'primevue/tabpanels';
|
||||
import type { TabsPassThroughOptions } from 'primevue/tabs';
|
||||
import type { TabViewPassThroughOptions } from 'primevue/tabview';
|
||||
import type { TagPassThroughOptions } from 'primevue/tag';
|
||||
import type { TerminalPassThroughOptions } from 'primevue/terminal';
|
||||
import type { TextareaPassThroughOptions } from 'primevue/textarea';
|
||||
import type { TieredMenuPassThroughOptions } from 'primevue/tieredmenu';
|
||||
import type { TimelinePassThroughOptions } from 'primevue/timeline';
|
||||
import type { ToastPassThroughOptions } from 'primevue/toast';
|
||||
import type { ToggleButtonPassThroughOptions } from 'primevue/togglebutton';
|
||||
import type { ToggleSwitchPassThroughOptions } from 'primevue/toggleswitch';
|
||||
import type { ToolbarPassThroughOptions } from 'primevue/toolbar';
|
||||
import type { TooltipDirectivePassThroughOptions } from 'primevue/tooltip';
|
||||
import type { TreePassThroughOptions } from 'primevue/tree';
|
||||
import type { TreeSelectPassThroughOptions } from 'primevue/treeselect';
|
||||
import type { TreeTablePassThroughOptions } from 'primevue/treetable';
|
||||
import type { DefaultPassThrough, PassThrough } from 'primevue/ts-helpers';
|
||||
import type { VirtualScrollerPassThroughOptions } from 'primevue/virtualscroller';
|
||||
|
||||
export interface PrimeVueConfiguration {
|
||||
ripple?: boolean;
|
||||
/**
|
||||
* @deprecated since v4.0. Use 'inputVariant' instead.
|
||||
*/
|
||||
inputStyle?: 'filled' | 'outlined' | undefined;
|
||||
inputVariant?: 'filled' | 'outlined' | undefined;
|
||||
locale?: PrimeVueLocaleOptions;
|
||||
filterMatchModeOptions?: any;
|
||||
zIndex?: PrimeVueZIndexOptions;
|
||||
theme?: any;
|
||||
unstyled?: boolean;
|
||||
pt?: PassThrough<PrimeVuePTOptions>;
|
||||
ptOptions?: PassThroughOptions;
|
||||
csp?: PrimeVueCSPOptions;
|
||||
}
|
||||
export * from '@primevue/core/config';
|
||||
|
||||
export declare const defaultOptions: PrimeVueConfiguration;
|
||||
|
||||
export interface PrimeVueZIndexOptions {
|
||||
modal?: number;
|
||||
overlay?: number;
|
||||
menu?: number;
|
||||
tooltip?: number;
|
||||
}
|
||||
|
||||
export interface PrimeVueCSPOptions {
|
||||
nonce?: string;
|
||||
}
|
||||
export interface PrimeVueConfiguration extends PrimeVueCoreConfiguration<PassThrough<PrimeVuePTOptions>, PassThroughOptions> {}
|
||||
|
||||
export interface PrimeVuePTOptions {
|
||||
accordion?: DefaultPassThrough<AccordionPassThroughOptions>;
|
||||
|
@ -276,150 +250,3 @@ export interface PrimeVuePTOptions {
|
|||
css?: ((options: any) => string | undefined) | string | undefined;
|
||||
};
|
||||
}
|
||||
|
||||
export interface PrimeVueLocaleAriaOptions {
|
||||
trueLabel?: string;
|
||||
falseLabel?: string;
|
||||
nullLabel?: string;
|
||||
star?: string;
|
||||
stars?: string;
|
||||
selectAll?: string;
|
||||
unselectAll?: string;
|
||||
close?: string;
|
||||
previous?: string;
|
||||
next?: string;
|
||||
navigation?: string;
|
||||
scrollTop?: string;
|
||||
moveUp?: string;
|
||||
moveTop?: string;
|
||||
moveDown?: string;
|
||||
moveBottom?: string;
|
||||
moveToTarget?: string;
|
||||
moveToSource?: string;
|
||||
moveAllToTarget?: string;
|
||||
moveAllToSource?: string;
|
||||
pageLabel?: string;
|
||||
firstPageLabel?: string;
|
||||
lastPageLabel?: string;
|
||||
nextPageLabel?: string;
|
||||
prevPageLabel?: string;
|
||||
rowsPerPageLabel?: string;
|
||||
jumpToPageDropdownLabel?: string;
|
||||
jumpToPageInputLabel?: string;
|
||||
selectRow?: string;
|
||||
unselectRow?: string;
|
||||
expandRow?: string;
|
||||
collapseRow?: string;
|
||||
showFilterMenu?: string;
|
||||
hideFilterMenu?: string;
|
||||
filterOperator?: string;
|
||||
filterConstraint?: string;
|
||||
editRow?: string;
|
||||
saveEdit?: string;
|
||||
cancelEdit?: string;
|
||||
listView?: string;
|
||||
gridView?: string;
|
||||
slide?: string;
|
||||
slideNumber?: string;
|
||||
zoomImage?: string;
|
||||
zoomIn?: string;
|
||||
zoomOut?: string;
|
||||
rotateRight?: string;
|
||||
rotateLeft?: string;
|
||||
listLabel?: string;
|
||||
}
|
||||
|
||||
export interface PrimeVueLocaleOptions {
|
||||
startsWith?: string;
|
||||
contains?: string;
|
||||
notContains?: string;
|
||||
endsWith?: string;
|
||||
equals?: string;
|
||||
notEquals?: string;
|
||||
noFilter?: string;
|
||||
lt?: string;
|
||||
lte?: string;
|
||||
gt?: string;
|
||||
gte?: string;
|
||||
dateIs?: string;
|
||||
dateIsNot?: string;
|
||||
dateBefore?: string;
|
||||
dateAfter?: string;
|
||||
clear?: string;
|
||||
apply?: string;
|
||||
matchAll?: string;
|
||||
matchAny?: string;
|
||||
addRule?: string;
|
||||
removeRule?: string;
|
||||
accept?: string;
|
||||
reject?: string;
|
||||
choose?: string;
|
||||
upload?: string;
|
||||
cancel?: string;
|
||||
completed?: string;
|
||||
pending?: string;
|
||||
fileSizeTypes: string[];
|
||||
dayNames: string[];
|
||||
dayNamesShort: string[];
|
||||
dayNamesMin: string[];
|
||||
monthNames: string[];
|
||||
monthNamesShort: string[];
|
||||
chooseYear?: string;
|
||||
chooseMonth?: string;
|
||||
chooseDate?: string;
|
||||
prevDecade?: string;
|
||||
nextDecade?: string;
|
||||
prevYear?: string;
|
||||
nextYear?: string;
|
||||
prevMonth?: string;
|
||||
nextMonth?: string;
|
||||
prevHour?: string;
|
||||
nextHour?: string;
|
||||
prevMinute?: string;
|
||||
nextMinute?: string;
|
||||
prevSecond?: string;
|
||||
nextSecond?: string;
|
||||
am?: string;
|
||||
pm?: string;
|
||||
today?: string;
|
||||
weekHeader?: string;
|
||||
firstDayOfWeek?: number;
|
||||
showMonthAfterYear?: boolean;
|
||||
dateFormat?: string;
|
||||
weak?: string;
|
||||
medium?: string;
|
||||
strong?: string;
|
||||
passwordPrompt?: string;
|
||||
emptyFilterMessage?: string;
|
||||
searchMessage?: string;
|
||||
selectionMessage?: string;
|
||||
emptySelectionMessage?: string;
|
||||
emptySearchMessage?: string;
|
||||
emptyMessage?: string;
|
||||
fileChosenMessage?: string;
|
||||
noFileChosenMessage?: string;
|
||||
aria?: PrimeVueLocaleAriaOptions;
|
||||
}
|
||||
|
||||
export declare function usePrimeVue(): {
|
||||
config: PrimeVueConfiguration;
|
||||
};
|
||||
|
||||
declare const plugin: Plugin;
|
||||
export default plugin;
|
||||
|
||||
declare module 'vue/types/vue' {
|
||||
interface Vue {
|
||||
$primevue: {
|
||||
config: PrimeVueConfiguration;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
declare module '@vue/runtime-core' {
|
||||
interface ComponentCustomProperties {
|
||||
$primevue: {
|
||||
config: PrimeVueConfiguration;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
import DomHandler from './DomHandler';
|
||||
|
||||
export default class ConnectedOverlayScrollHandler {
|
||||
constructor(element, listener = () => {}) {
|
||||
this.element = element;
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
bindScrollListener() {
|
||||
this.scrollableParents = DomHandler.getScrollableParents(this.element);
|
||||
|
||||
for (let i = 0; i < this.scrollableParents.length; i++) {
|
||||
this.scrollableParents[i].addEventListener('scroll', this.listener);
|
||||
}
|
||||
}
|
||||
|
||||
unbindScrollListener() {
|
||||
if (this.scrollableParents) {
|
||||
for (let i = 0; i < this.scrollableParents.length; i++) {
|
||||
this.scrollableParents[i].removeEventListener('scroll', this.listener);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
destroy() {
|
||||
this.unbindScrollListener();
|
||||
this.element = null;
|
||||
this.listener = null;
|
||||
this.scrollableParents = null;
|
||||
}
|
||||
}
|
|
@ -1,862 +0,0 @@
|
|||
import { $dt } from '@primevue/themes';
|
||||
|
||||
export default {
|
||||
innerWidth(el) {
|
||||
if (el) {
|
||||
let width = el.offsetWidth;
|
||||
let style = getComputedStyle(el);
|
||||
|
||||
width += parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);
|
||||
|
||||
return width;
|
||||
}
|
||||
|
||||
return 0;
|
||||
},
|
||||
|
||||
width(el) {
|
||||
if (el) {
|
||||
let width = el.offsetWidth;
|
||||
let style = getComputedStyle(el);
|
||||
|
||||
width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);
|
||||
|
||||
return width;
|
||||
}
|
||||
|
||||
return 0;
|
||||
},
|
||||
|
||||
getWindowScrollTop() {
|
||||
let doc = document.documentElement;
|
||||
|
||||
return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);
|
||||
},
|
||||
|
||||
getWindowScrollLeft() {
|
||||
let doc = document.documentElement;
|
||||
|
||||
return (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);
|
||||
},
|
||||
|
||||
getOuterWidth(el, margin) {
|
||||
if (el) {
|
||||
let width = el.offsetWidth;
|
||||
|
||||
if (margin) {
|
||||
let style = getComputedStyle(el);
|
||||
|
||||
width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);
|
||||
}
|
||||
|
||||
return width;
|
||||
}
|
||||
|
||||
return 0;
|
||||
},
|
||||
|
||||
getOuterHeight(el, margin) {
|
||||
if (el) {
|
||||
let height = el.offsetHeight;
|
||||
|
||||
if (margin) {
|
||||
let style = getComputedStyle(el);
|
||||
|
||||
height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);
|
||||
}
|
||||
|
||||
return height;
|
||||
}
|
||||
|
||||
return 0;
|
||||
},
|
||||
|
||||
getClientHeight(el, margin) {
|
||||
if (el) {
|
||||
let height = el.clientHeight;
|
||||
|
||||
if (margin) {
|
||||
let style = getComputedStyle(el);
|
||||
|
||||
height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);
|
||||
}
|
||||
|
||||
return height;
|
||||
}
|
||||
|
||||
return 0;
|
||||
},
|
||||
|
||||
getViewport() {
|
||||
let win = window,
|
||||
d = document,
|
||||
e = d.documentElement,
|
||||
g = d.getElementsByTagName('body')[0],
|
||||
w = win.innerWidth || e.clientWidth || g.clientWidth,
|
||||
h = win.innerHeight || e.clientHeight || g.clientHeight;
|
||||
|
||||
return { width: w, height: h };
|
||||
},
|
||||
|
||||
getOffset(el) {
|
||||
if (el) {
|
||||
let rect = el.getBoundingClientRect();
|
||||
|
||||
return {
|
||||
top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),
|
||||
left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0)
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
top: 'auto',
|
||||
left: 'auto'
|
||||
};
|
||||
},
|
||||
|
||||
index(element) {
|
||||
if (element) {
|
||||
let children = this.getParentNode(element)?.childNodes;
|
||||
let num = 0;
|
||||
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
if (children[i] === element) return num;
|
||||
if (children[i].nodeType === 1) num++;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
},
|
||||
|
||||
addMultipleClasses(element, classNames) {
|
||||
if (element && classNames) {
|
||||
[classNames]
|
||||
.flat()
|
||||
.filter(Boolean)
|
||||
.forEach((cNames) => cNames.split(' ').forEach((className) => this.addClass(element, className)));
|
||||
}
|
||||
},
|
||||
|
||||
removeMultipleClasses(element, classNames) {
|
||||
if (element && classNames) {
|
||||
[classNames]
|
||||
.flat()
|
||||
.filter(Boolean)
|
||||
.forEach((cNames) => cNames.split(' ').forEach((className) => this.removeClass(element, className)));
|
||||
}
|
||||
},
|
||||
|
||||
addClass(element, className) {
|
||||
if (element && className && !this.hasClass(element, className)) {
|
||||
if (element.classList) element.classList.add(className);
|
||||
else element.className += ' ' + className;
|
||||
}
|
||||
},
|
||||
|
||||
removeClass(element, className) {
|
||||
if (element && className) {
|
||||
if (element.classList) element.classList.remove(className);
|
||||
else element.className = element.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
|
||||
}
|
||||
},
|
||||
|
||||
hasClass(element, className) {
|
||||
if (element) {
|
||||
if (element.classList) return element.classList.contains(className);
|
||||
else return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
addStyles(element, styles = {}) {
|
||||
if (element) {
|
||||
Object.entries(styles).forEach(([key, value]) => (element.style[key] = value));
|
||||
}
|
||||
},
|
||||
|
||||
find(element, selector) {
|
||||
return this.isElement(element) ? element.querySelectorAll(selector) : [];
|
||||
},
|
||||
|
||||
findSingle(element, selector) {
|
||||
return this.isElement(element) ? (element.matches(selector) ? element : element.querySelector(selector)) : null;
|
||||
},
|
||||
|
||||
createElement(type, attributes = {}, ...children) {
|
||||
if (type) {
|
||||
const element = document.createElement(type);
|
||||
|
||||
this.setAttributes(element, attributes);
|
||||
element.append(...children);
|
||||
|
||||
return element;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
},
|
||||
|
||||
setAttribute(element, attribute = '', value) {
|
||||
if (this.isElement(element) && value !== null && value !== undefined) {
|
||||
element.setAttribute(attribute, value);
|
||||
}
|
||||
},
|
||||
|
||||
setAttributes(element, attributes = {}) {
|
||||
if (this.isElement(element)) {
|
||||
const computedStyles = (rule, value) => {
|
||||
const styles = element?.$attrs?.[rule] ? [element?.$attrs?.[rule]] : [];
|
||||
|
||||
return [value].flat().reduce((cv, v) => {
|
||||
if (v !== null && v !== undefined) {
|
||||
const type = typeof v;
|
||||
|
||||
if (type === 'string' || type === 'number') {
|
||||
cv.push(v);
|
||||
} else if (type === 'object') {
|
||||
const _cv = Array.isArray(v)
|
||||
? computedStyles(rule, v)
|
||||
: Object.entries(v).map(([_k, _v]) => (rule === 'style' && (!!_v || _v === 0) ? `${_k.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()}:${_v}` : !!_v ? _k : undefined));
|
||||
|
||||
cv = _cv.length ? cv.concat(_cv.filter((c) => !!c)) : cv;
|
||||
}
|
||||
}
|
||||
|
||||
return cv;
|
||||
}, styles);
|
||||
};
|
||||
|
||||
Object.entries(attributes).forEach(([key, value]) => {
|
||||
if (value !== undefined && value !== null) {
|
||||
const matchedEvent = key.match(/^on(.+)/);
|
||||
|
||||
if (matchedEvent) {
|
||||
element.addEventListener(matchedEvent[1].toLowerCase(), value);
|
||||
} else if (key === 'p-bind') {
|
||||
this.setAttributes(element, value);
|
||||
} else {
|
||||
value = key === 'class' ? [...new Set(computedStyles('class', value))].join(' ').trim() : key === 'style' ? computedStyles('style', value).join(';').trim() : value;
|
||||
(element.$attrs = element.$attrs || {}) && (element.$attrs[key] = value);
|
||||
element.setAttribute(key, value);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
getAttribute(element, name) {
|
||||
if (this.isElement(element)) {
|
||||
const value = element.getAttribute(name);
|
||||
|
||||
if (!isNaN(value)) {
|
||||
return +value;
|
||||
}
|
||||
|
||||
if (value === 'true' || value === 'false') {
|
||||
return value === 'true';
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
},
|
||||
|
||||
isAttributeEquals(element, name, value) {
|
||||
return this.isElement(element) ? this.getAttribute(element, name) === value : false;
|
||||
},
|
||||
|
||||
isAttributeNotEquals(element, name, value) {
|
||||
return !this.isAttributeEquals(element, name, value);
|
||||
},
|
||||
|
||||
getHeight(el) {
|
||||
if (el) {
|
||||
let height = el.offsetHeight;
|
||||
let style = getComputedStyle(el);
|
||||
|
||||
height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
|
||||
|
||||
return height;
|
||||
}
|
||||
|
||||
return 0;
|
||||
},
|
||||
|
||||
getWidth(el) {
|
||||
if (el) {
|
||||
let width = el.offsetWidth;
|
||||
let style = getComputedStyle(el);
|
||||
|
||||
width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);
|
||||
|
||||
return width;
|
||||
}
|
||||
|
||||
return 0;
|
||||
},
|
||||
|
||||
absolutePosition(element, target, gutter = true) {
|
||||
if (element) {
|
||||
const elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);
|
||||
const elementOuterHeight = elementDimensions.height;
|
||||
const elementOuterWidth = elementDimensions.width;
|
||||
const targetOuterHeight = target.offsetHeight;
|
||||
const targetOuterWidth = target.offsetWidth;
|
||||
const targetOffset = target.getBoundingClientRect();
|
||||
const windowScrollTop = this.getWindowScrollTop();
|
||||
const windowScrollLeft = this.getWindowScrollLeft();
|
||||
const viewport = this.getViewport();
|
||||
let top,
|
||||
left,
|
||||
origin = 'top';
|
||||
|
||||
if (targetOffset.top + targetOuterHeight + elementOuterHeight > viewport.height) {
|
||||
top = targetOffset.top + windowScrollTop - elementOuterHeight;
|
||||
origin = 'bottom';
|
||||
|
||||
if (top < 0) {
|
||||
top = windowScrollTop;
|
||||
}
|
||||
} else {
|
||||
top = targetOuterHeight + targetOffset.top + windowScrollTop;
|
||||
}
|
||||
|
||||
if (targetOffset.left + elementOuterWidth > viewport.width) left = Math.max(0, targetOffset.left + windowScrollLeft + targetOuterWidth - elementOuterWidth);
|
||||
else left = targetOffset.left + windowScrollLeft;
|
||||
|
||||
element.style.top = top + 'px';
|
||||
element.style.left = left + 'px';
|
||||
element.style.transformOrigin = origin;
|
||||
gutter && (element.style.marginTop = origin === 'bottom' ? `calc(${$dt('anchor.gutter', '2px').variable} * -1)` : $dt('anchor.gutter').variable);
|
||||
}
|
||||
},
|
||||
|
||||
relativePosition(element, target, gutter = true) {
|
||||
if (element) {
|
||||
const elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);
|
||||
const targetHeight = target.offsetHeight;
|
||||
const targetOffset = target.getBoundingClientRect();
|
||||
const viewport = this.getViewport();
|
||||
let top,
|
||||
left,
|
||||
origin = 'top';
|
||||
|
||||
if (targetOffset.top + targetHeight + elementDimensions.height > viewport.height) {
|
||||
top = -1 * elementDimensions.height;
|
||||
origin = 'bottom';
|
||||
|
||||
if (targetOffset.top + top < 0) {
|
||||
top = -1 * targetOffset.top;
|
||||
}
|
||||
} else {
|
||||
top = targetHeight;
|
||||
}
|
||||
|
||||
if (elementDimensions.width > viewport.width) {
|
||||
// element wider then viewport and cannot fit on screen (align at left side of viewport)
|
||||
left = targetOffset.left * -1;
|
||||
} else if (targetOffset.left + elementDimensions.width > viewport.width) {
|
||||
// element wider then viewport but can be fit on screen (align at right side of viewport)
|
||||
left = (targetOffset.left + elementDimensions.width - viewport.width) * -1;
|
||||
} else {
|
||||
// element fits on screen (align with target)
|
||||
left = 0;
|
||||
}
|
||||
|
||||
element.style.top = top + 'px';
|
||||
element.style.left = left + 'px';
|
||||
element.style.transformOrigin = origin;
|
||||
gutter && (element.style.marginTop = origin === 'bottom' ? `calc(${$dt('anchor.gutter', '2px').variable} * -1)` : $dt('anchor.gutter').variable);
|
||||
}
|
||||
},
|
||||
|
||||
nestedPosition(element, level) {
|
||||
if (element) {
|
||||
const parentItem = element.parentElement;
|
||||
const elementOffset = this.getOffset(parentItem);
|
||||
const viewport = this.getViewport();
|
||||
const sublistWidth = element.offsetParent ? element.offsetWidth : this.getHiddenElementOuterWidth(element);
|
||||
const itemOuterWidth = this.getOuterWidth(parentItem.children[0]);
|
||||
let left;
|
||||
|
||||
if (parseInt(elementOffset.left, 10) + itemOuterWidth + sublistWidth > viewport.width - this.calculateScrollbarWidth()) {
|
||||
if (parseInt(elementOffset.left, 10) < sublistWidth) {
|
||||
// for too small screens
|
||||
if (level % 2 === 1) {
|
||||
left = parseInt(elementOffset.left, 10) ? '-' + parseInt(elementOffset.left, 10) + 'px' : '100%';
|
||||
} else if (level % 2 === 0) {
|
||||
left = viewport.width - sublistWidth - this.calculateScrollbarWidth() + 'px';
|
||||
}
|
||||
} else {
|
||||
left = '-100%';
|
||||
}
|
||||
} else {
|
||||
left = '100%';
|
||||
}
|
||||
|
||||
element.style.top = '0px';
|
||||
element.style.left = left;
|
||||
}
|
||||
},
|
||||
|
||||
getParentNode(element) {
|
||||
let parent = element?.parentNode;
|
||||
|
||||
if (parent && parent instanceof ShadowRoot && parent.host) {
|
||||
parent = parent.host;
|
||||
}
|
||||
|
||||
return parent;
|
||||
},
|
||||
|
||||
getParents(element, parents = []) {
|
||||
const parent = this.getParentNode(element);
|
||||
|
||||
return parent === null ? parents : this.getParents(parent, parents.concat([parent]));
|
||||
},
|
||||
|
||||
getScrollableParents(element) {
|
||||
let scrollableParents = [];
|
||||
|
||||
if (element) {
|
||||
let parents = this.getParents(element);
|
||||
const overflowRegex = /(auto|scroll)/;
|
||||
|
||||
const overflowCheck = (node) => {
|
||||
try {
|
||||
let styleDeclaration = window['getComputedStyle'](node, null);
|
||||
|
||||
return overflowRegex.test(styleDeclaration.getPropertyValue('overflow')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowX')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowY'));
|
||||
} catch (err) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
for (let parent of parents) {
|
||||
let scrollSelectors = parent.nodeType === 1 && parent.dataset['scrollselectors'];
|
||||
|
||||
if (scrollSelectors) {
|
||||
let selectors = scrollSelectors.split(',');
|
||||
|
||||
for (let selector of selectors) {
|
||||
let el = this.findSingle(parent, selector);
|
||||
|
||||
if (el && overflowCheck(el)) {
|
||||
scrollableParents.push(el);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (parent.nodeType !== 9 && overflowCheck(parent)) {
|
||||
scrollableParents.push(parent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return scrollableParents;
|
||||
},
|
||||
|
||||
getHiddenElementOuterHeight(element) {
|
||||
if (element) {
|
||||
element.style.visibility = 'hidden';
|
||||
element.style.display = 'block';
|
||||
let elementHeight = element.offsetHeight;
|
||||
|
||||
element.style.display = 'none';
|
||||
element.style.visibility = 'visible';
|
||||
|
||||
return elementHeight;
|
||||
}
|
||||
|
||||
return 0;
|
||||
},
|
||||
|
||||
getHiddenElementOuterWidth(element) {
|
||||
if (element) {
|
||||
element.style.visibility = 'hidden';
|
||||
element.style.display = 'block';
|
||||
let elementWidth = element.offsetWidth;
|
||||
|
||||
element.style.display = 'none';
|
||||
element.style.visibility = 'visible';
|
||||
|
||||
return elementWidth;
|
||||
}
|
||||
|
||||
return 0;
|
||||
},
|
||||
|
||||
getHiddenElementDimensions(element) {
|
||||
if (element) {
|
||||
let dimensions = {};
|
||||
|
||||
element.style.visibility = 'hidden';
|
||||
element.style.display = 'block';
|
||||
dimensions.width = element.offsetWidth;
|
||||
dimensions.height = element.offsetHeight;
|
||||
element.style.display = 'none';
|
||||
element.style.visibility = 'visible';
|
||||
|
||||
return dimensions;
|
||||
}
|
||||
|
||||
return 0;
|
||||
},
|
||||
|
||||
fadeIn(element, duration) {
|
||||
if (element) {
|
||||
element.style.opacity = 0;
|
||||
|
||||
let last = +new Date();
|
||||
let opacity = 0;
|
||||
|
||||
let tick = function () {
|
||||
opacity = +element.style.opacity + (new Date().getTime() - last) / duration;
|
||||
element.style.opacity = opacity;
|
||||
last = +new Date();
|
||||
|
||||
if (+opacity < 1) {
|
||||
(window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);
|
||||
}
|
||||
};
|
||||
|
||||
tick();
|
||||
}
|
||||
},
|
||||
|
||||
fadeOut(element, ms) {
|
||||
if (element) {
|
||||
let opacity = 1,
|
||||
interval = 50,
|
||||
duration = ms,
|
||||
gap = interval / duration;
|
||||
|
||||
let fading = setInterval(() => {
|
||||
opacity -= gap;
|
||||
|
||||
if (opacity <= 0) {
|
||||
opacity = 0;
|
||||
clearInterval(fading);
|
||||
}
|
||||
|
||||
element.style.opacity = opacity;
|
||||
}, interval);
|
||||
}
|
||||
},
|
||||
|
||||
getUserAgent() {
|
||||
return navigator.userAgent;
|
||||
},
|
||||
|
||||
appendChild(element, target) {
|
||||
if (this.isElement(target)) target.appendChild(element);
|
||||
else if (target.el && target.elElement) target.elElement.appendChild(element);
|
||||
else throw new Error('Cannot append ' + target + ' to ' + element);
|
||||
},
|
||||
|
||||
isElement(obj) {
|
||||
return typeof HTMLElement === 'object' ? obj instanceof HTMLElement : obj && typeof obj === 'object' && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === 'string';
|
||||
},
|
||||
|
||||
scrollInView(container, item) {
|
||||
let borderTopValue = getComputedStyle(container).getPropertyValue('borderTopWidth');
|
||||
let borderTop = borderTopValue ? parseFloat(borderTopValue) : 0;
|
||||
let paddingTopValue = getComputedStyle(container).getPropertyValue('paddingTop');
|
||||
let paddingTop = paddingTopValue ? parseFloat(paddingTopValue) : 0;
|
||||
let containerRect = container.getBoundingClientRect();
|
||||
let itemRect = item.getBoundingClientRect();
|
||||
let offset = itemRect.top + document.body.scrollTop - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;
|
||||
let scroll = container.scrollTop;
|
||||
let elementHeight = container.clientHeight;
|
||||
let itemHeight = this.getOuterHeight(item);
|
||||
|
||||
if (offset < 0) {
|
||||
container.scrollTop = scroll + offset;
|
||||
} else if (offset + itemHeight > elementHeight) {
|
||||
container.scrollTop = scroll + offset - elementHeight + itemHeight;
|
||||
}
|
||||
},
|
||||
|
||||
clearSelection() {
|
||||
if (window.getSelection) {
|
||||
if (window.getSelection().empty) {
|
||||
window.getSelection().empty();
|
||||
} else if (window.getSelection().removeAllRanges && window.getSelection().rangeCount > 0 && window.getSelection().getRangeAt(0).getClientRects().length > 0) {
|
||||
window.getSelection().removeAllRanges();
|
||||
}
|
||||
} else if (document['selection'] && document['selection'].empty) {
|
||||
try {
|
||||
document['selection'].empty();
|
||||
} catch (error) {
|
||||
//ignore IE bug
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
getSelection() {
|
||||
if (window.getSelection) return window.getSelection().toString();
|
||||
else if (document.getSelection) return document.getSelection().toString();
|
||||
else if (document['selection']) return document['selection'].createRange().text;
|
||||
|
||||
return null;
|
||||
},
|
||||
|
||||
calculateScrollbarWidth() {
|
||||
if (this.calculatedScrollbarWidth != null) return this.calculatedScrollbarWidth;
|
||||
|
||||
let scrollDiv = document.createElement('div');
|
||||
|
||||
this.addStyles(scrollDiv, {
|
||||
width: '100px',
|
||||
height: '100px',
|
||||
overflow: 'scroll',
|
||||
position: 'absolute',
|
||||
top: '-9999px'
|
||||
});
|
||||
document.body.appendChild(scrollDiv);
|
||||
|
||||
let scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
|
||||
|
||||
document.body.removeChild(scrollDiv);
|
||||
|
||||
this.calculatedScrollbarWidth = scrollbarWidth;
|
||||
|
||||
return scrollbarWidth;
|
||||
},
|
||||
|
||||
calculateBodyScrollbarWidth() {
|
||||
return window.innerWidth - document.documentElement.offsetWidth;
|
||||
},
|
||||
|
||||
getBrowser() {
|
||||
if (!this.browser) {
|
||||
let matched = this.resolveUserAgent();
|
||||
|
||||
this.browser = {};
|
||||
|
||||
if (matched.browser) {
|
||||
this.browser[matched.browser] = true;
|
||||
this.browser['version'] = matched.version;
|
||||
}
|
||||
|
||||
if (this.browser['chrome']) {
|
||||
this.browser['webkit'] = true;
|
||||
} else if (this.browser['webkit']) {
|
||||
this.browser['safari'] = true;
|
||||
}
|
||||
}
|
||||
|
||||
return this.browser;
|
||||
},
|
||||
|
||||
resolveUserAgent() {
|
||||
let ua = navigator.userAgent.toLowerCase();
|
||||
let match = /(chrome)[ ]([\w.]+)/.exec(ua) || /(webkit)[ ]([\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ ]([\w.]+)/.exec(ua) || /(msie) ([\w.]+)/.exec(ua) || (ua.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua)) || [];
|
||||
|
||||
return {
|
||||
browser: match[1] || '',
|
||||
version: match[2] || '0'
|
||||
};
|
||||
},
|
||||
|
||||
isVisible(element) {
|
||||
return element && element.offsetParent != null;
|
||||
},
|
||||
|
||||
invokeElementMethod(element, methodName, args) {
|
||||
element[methodName].apply(element, args);
|
||||
},
|
||||
|
||||
isExist(element) {
|
||||
return !!(element !== null && typeof element !== 'undefined' && element.nodeName && this.getParentNode(element));
|
||||
},
|
||||
|
||||
isClient() {
|
||||
return !!(typeof window !== 'undefined' && window.document && window.document.createElement);
|
||||
},
|
||||
|
||||
focus(el, options) {
|
||||
el && document.activeElement !== el && el.focus(options);
|
||||
},
|
||||
|
||||
isFocusableElement(element, selector = '') {
|
||||
return this.isElement(element)
|
||||
? element.matches(`button:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
|
||||
[href][clientHeight][clientWidth]:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
|
||||
input:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
|
||||
select:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
|
||||
textarea:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
|
||||
[tabIndex]:not([tabIndex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
|
||||
[contenteditable]:not([tabIndex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector}`)
|
||||
: false;
|
||||
},
|
||||
|
||||
getFocusableElements(element, selector = '') {
|
||||
let focusableElements = this.find(
|
||||
element,
|
||||
`button:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
|
||||
[href][clientHeight][clientWidth]:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
|
||||
input:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
|
||||
select:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
|
||||
textarea:not([tabindex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
|
||||
[tabIndex]:not([tabIndex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector},
|
||||
[contenteditable]:not([tabIndex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden])${selector}`
|
||||
);
|
||||
|
||||
let visibleFocusableElements = [];
|
||||
|
||||
for (let focusableElement of focusableElements) {
|
||||
if (getComputedStyle(focusableElement).display != 'none' && getComputedStyle(focusableElement).visibility != 'hidden') visibleFocusableElements.push(focusableElement);
|
||||
}
|
||||
|
||||
return visibleFocusableElements;
|
||||
},
|
||||
|
||||
getFirstFocusableElement(element, selector) {
|
||||
const focusableElements = this.getFocusableElements(element, selector);
|
||||
|
||||
return focusableElements.length > 0 ? focusableElements[0] : null;
|
||||
},
|
||||
|
||||
getLastFocusableElement(element, selector) {
|
||||
const focusableElements = this.getFocusableElements(element, selector);
|
||||
|
||||
return focusableElements.length > 0 ? focusableElements[focusableElements.length - 1] : null;
|
||||
},
|
||||
|
||||
getNextFocusableElement(container, element, selector) {
|
||||
const focusableElements = this.getFocusableElements(container, selector);
|
||||
const index = focusableElements.length > 0 ? focusableElements.findIndex((el) => el === element) : -1;
|
||||
const nextIndex = index > -1 && focusableElements.length >= index + 1 ? index + 1 : -1;
|
||||
|
||||
return nextIndex > -1 ? focusableElements[nextIndex] : null;
|
||||
},
|
||||
|
||||
getPreviousElementSibling(element, selector) {
|
||||
let previousElement = element.previousElementSibling;
|
||||
|
||||
while (previousElement) {
|
||||
if (previousElement.matches(selector)) {
|
||||
return previousElement;
|
||||
} else {
|
||||
previousElement = previousElement.previousElementSibling;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
},
|
||||
|
||||
getNextElementSibling(element, selector) {
|
||||
let nextElement = element.nextElementSibling;
|
||||
|
||||
while (nextElement) {
|
||||
if (nextElement.matches(selector)) {
|
||||
return nextElement;
|
||||
} else {
|
||||
nextElement = nextElement.nextElementSibling;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
},
|
||||
|
||||
isClickable(element) {
|
||||
if (element) {
|
||||
const targetNode = element.nodeName;
|
||||
const parentNode = element.parentElement && element.parentElement.nodeName;
|
||||
|
||||
return (
|
||||
targetNode === 'INPUT' ||
|
||||
targetNode === 'TEXTAREA' ||
|
||||
targetNode === 'BUTTON' ||
|
||||
targetNode === 'A' ||
|
||||
parentNode === 'INPUT' ||
|
||||
parentNode === 'TEXTAREA' ||
|
||||
parentNode === 'BUTTON' ||
|
||||
parentNode === 'A' ||
|
||||
!!element.closest('.p-button, .p-checkbox, .p-radiobutton') // @todo Add [data-pc-section="button"]
|
||||
);
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
applyStyle(element, style) {
|
||||
if (typeof style === 'string') {
|
||||
element.style.cssText = style;
|
||||
} else {
|
||||
for (let prop in style) {
|
||||
element.style[prop] = style[prop];
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
isIOS() {
|
||||
return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream'];
|
||||
},
|
||||
|
||||
isAndroid() {
|
||||
return /(android)/i.test(navigator.userAgent);
|
||||
},
|
||||
|
||||
isTouchDevice() {
|
||||
return 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;
|
||||
},
|
||||
|
||||
hasCSSAnimation(element) {
|
||||
if (element) {
|
||||
const style = getComputedStyle(element);
|
||||
const animationDuration = parseFloat(style.getPropertyValue('animation-duration') || '0');
|
||||
|
||||
return animationDuration > 0;
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
hasCSSTransition(element) {
|
||||
if (element) {
|
||||
const style = getComputedStyle(element);
|
||||
const transitionDuration = parseFloat(style.getPropertyValue('transition-duration') || '0');
|
||||
|
||||
return transitionDuration > 0;
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
exportCSV(csv, filename) {
|
||||
let blob = new Blob([csv], {
|
||||
type: 'application/csv;charset=utf-8;'
|
||||
});
|
||||
|
||||
if (window.navigator.msSaveOrOpenBlob) {
|
||||
navigator.msSaveOrOpenBlob(blob, filename + '.csv');
|
||||
} else {
|
||||
let link = document.createElement('a');
|
||||
|
||||
if (link.download !== undefined) {
|
||||
link.setAttribute('href', URL.createObjectURL(blob));
|
||||
link.setAttribute('download', filename + '.csv');
|
||||
link.style.display = 'none';
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
} else {
|
||||
csv = 'data:text/csv;charset=utf-8,' + csv;
|
||||
window.open(encodeURI(csv));
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
blockBodyScroll(className = 'p-overflow-hidden') {
|
||||
document.body.style.setProperty($dt('scrollbar.width').name, this.calculateBodyScrollbarWidth() + 'px');
|
||||
this.addClass(document.body, className);
|
||||
},
|
||||
|
||||
unblockBodyScroll(className = 'p-overflow-hidden') {
|
||||
document.body.style.removeProperty($dt('scrollbar.width').name);
|
||||
this.removeClass(document.body, className);
|
||||
}
|
||||
};
|
|
@ -1,32 +0,0 @@
|
|||
export default function primebus() {
|
||||
const allHandlers = new Map();
|
||||
|
||||
return {
|
||||
on(type, handler) {
|
||||
let handlers = allHandlers.get(type);
|
||||
|
||||
if (!handlers) handlers = [handler];
|
||||
else handlers.push(handler);
|
||||
|
||||
allHandlers.set(type, handlers);
|
||||
},
|
||||
|
||||
off(type, handler) {
|
||||
let handlers = allHandlers.get(type);
|
||||
|
||||
if (handlers) {
|
||||
handlers.splice(handlers.indexOf(handler) >>> 0, 1);
|
||||
}
|
||||
},
|
||||
|
||||
emit(type, evt) {
|
||||
let handlers = allHandlers.get(type);
|
||||
|
||||
if (handlers) {
|
||||
handlers.slice().map((handler) => {
|
||||
handler(evt);
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
|
@ -1,51 +0,0 @@
|
|||
import ObjectUtils from './ObjectUtils';
|
||||
|
||||
export default class {
|
||||
helpers;
|
||||
type;
|
||||
constructor({ init, type }) {
|
||||
this.helpers = new Set(init);
|
||||
this.type = type;
|
||||
}
|
||||
add(instance) {
|
||||
this.helpers.add(instance);
|
||||
}
|
||||
update() {
|
||||
// @todo
|
||||
}
|
||||
delete(instance) {
|
||||
this.helpers.delete(instance);
|
||||
}
|
||||
clear() {
|
||||
this.helpers.clear();
|
||||
}
|
||||
get(parentInstance, slots) {
|
||||
const children = this._get(parentInstance, slots);
|
||||
const computed = children ? this._recursive([...this.helpers], children) : null;
|
||||
|
||||
return ObjectUtils.isNotEmpty(computed) ? computed : null;
|
||||
}
|
||||
_isMatched(instance, key) {
|
||||
const parent = instance?.parent;
|
||||
|
||||
return parent?.vnode?.key === key || (parent && this._isMatched(parent, key)) || false;
|
||||
}
|
||||
_get(parentInstance, slots) {
|
||||
return (slots || parentInstance?.$slots)?.default?.() || null;
|
||||
}
|
||||
_recursive(helpers = [], children = []) {
|
||||
let components = [];
|
||||
|
||||
children.forEach((child) => {
|
||||
if (child.children instanceof Array) {
|
||||
components = components.concat(this._recursive(components, child.children));
|
||||
} else if (child.type.name === this.type) {
|
||||
components.push(child);
|
||||
} else if (ObjectUtils.isNotEmpty(child.key)) {
|
||||
components = components.concat(helpers.filter((c) => this._isMatched(c, child.key)).map((c) => c.vnode));
|
||||
}
|
||||
});
|
||||
|
||||
return components;
|
||||
}
|
||||
}
|
|
@ -1,383 +0,0 @@
|
|||
export default {
|
||||
equals(obj1, obj2, field) {
|
||||
if (field) return this.resolveFieldData(obj1, field) === this.resolveFieldData(obj2, field);
|
||||
else return this.deepEquals(obj1, obj2);
|
||||
},
|
||||
|
||||
deepEquals(a, b) {
|
||||
if (a === b) return true;
|
||||
|
||||
if (a && b && typeof a == 'object' && typeof b == 'object') {
|
||||
var arrA = Array.isArray(a),
|
||||
arrB = Array.isArray(b),
|
||||
i,
|
||||
length,
|
||||
key;
|
||||
|
||||
if (arrA && arrB) {
|
||||
length = a.length;
|
||||
if (length != b.length) return false;
|
||||
for (i = length; i-- !== 0; ) if (!this.deepEquals(a[i], b[i])) return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if (arrA != arrB) return false;
|
||||
|
||||
var dateA = a instanceof Date,
|
||||
dateB = b instanceof Date;
|
||||
|
||||
if (dateA != dateB) return false;
|
||||
if (dateA && dateB) return a.getTime() == b.getTime();
|
||||
|
||||
var regexpA = a instanceof RegExp,
|
||||
regexpB = b instanceof RegExp;
|
||||
|
||||
if (regexpA != regexpB) return false;
|
||||
if (regexpA && regexpB) return a.toString() == b.toString();
|
||||
|
||||
var keys = Object.keys(a);
|
||||
|
||||
length = keys.length;
|
||||
|
||||
if (length !== Object.keys(b).length) return false;
|
||||
|
||||
for (i = length; i-- !== 0; ) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
|
||||
|
||||
for (i = length; i-- !== 0; ) {
|
||||
key = keys[i];
|
||||
if (!this.deepEquals(a[key], b[key])) return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return a !== a && b !== b;
|
||||
},
|
||||
|
||||
resolveFieldData(data, field) {
|
||||
if (!data || !field) {
|
||||
// short circuit if there is nothing to resolve
|
||||
return null;
|
||||
}
|
||||
|
||||
try {
|
||||
const value = data[field];
|
||||
|
||||
if (this.isNotEmpty(value)) return value;
|
||||
} catch {
|
||||
// Performance optimization: https://github.com/primefaces/primereact/issues/4797
|
||||
// do nothing and continue to other methods to resolve field data
|
||||
}
|
||||
|
||||
if (Object.keys(data).length) {
|
||||
if (this.isFunction(field)) {
|
||||
return field(data);
|
||||
} else if (field.indexOf('.') === -1) {
|
||||
return data[field];
|
||||
} else {
|
||||
let fields = field.split('.');
|
||||
let value = data;
|
||||
|
||||
for (var i = 0, len = fields.length; i < len; ++i) {
|
||||
if (value == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
value = value[fields[i]];
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
},
|
||||
|
||||
getItemValue(obj, ...params) {
|
||||
return this.isFunction(obj) ? obj(...params) : obj;
|
||||
},
|
||||
|
||||
filter(value, fields, filterValue) {
|
||||
var filteredItems = [];
|
||||
|
||||
if (value) {
|
||||
for (let item of value) {
|
||||
for (let field of fields) {
|
||||
if (String(this.resolveFieldData(item, field)).toLowerCase().indexOf(filterValue.toLowerCase()) > -1) {
|
||||
filteredItems.push(item);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return filteredItems;
|
||||
},
|
||||
|
||||
reorderArray(value, from, to) {
|
||||
if (value && from !== to) {
|
||||
if (to >= value.length) {
|
||||
to %= value.length;
|
||||
from %= value.length;
|
||||
}
|
||||
|
||||
value.splice(to, 0, value.splice(from, 1)[0]);
|
||||
}
|
||||
},
|
||||
|
||||
findIndexInList(value, list) {
|
||||
let index = -1;
|
||||
|
||||
if (list) {
|
||||
for (let i = 0; i < list.length; i++) {
|
||||
if (list[i] === value) {
|
||||
index = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return index;
|
||||
},
|
||||
|
||||
contains(value, list) {
|
||||
if (value != null && list && list.length) {
|
||||
for (let val of list) {
|
||||
if (this.equals(value, val)) return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
insertIntoOrderedArray(item, index, arr, sourceArr) {
|
||||
if (arr.length > 0) {
|
||||
let injected = false;
|
||||
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
let currentItemIndex = this.findIndexInList(arr[i], sourceArr);
|
||||
|
||||
if (currentItemIndex > index) {
|
||||
arr.splice(i, 0, item);
|
||||
injected = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!injected) {
|
||||
arr.push(item);
|
||||
}
|
||||
} else {
|
||||
arr.push(item);
|
||||
}
|
||||
},
|
||||
|
||||
removeAccents(str) {
|
||||
if (str && str.search(/[\xC0-\xFF]/g) > -1) {
|
||||
str = str
|
||||
.replace(/[\xC0-\xC5]/g, 'A')
|
||||
.replace(/[\xC6]/g, 'AE')
|
||||
.replace(/[\xC7]/g, 'C')
|
||||
.replace(/[\xC8-\xCB]/g, 'E')
|
||||
.replace(/[\xCC-\xCF]/g, 'I')
|
||||
.replace(/[\xD0]/g, 'D')
|
||||
.replace(/[\xD1]/g, 'N')
|
||||
.replace(/[\xD2-\xD6\xD8]/g, 'O')
|
||||
.replace(/[\xD9-\xDC]/g, 'U')
|
||||
.replace(/[\xDD]/g, 'Y')
|
||||
.replace(/[\xDE]/g, 'P')
|
||||
.replace(/[\xE0-\xE5]/g, 'a')
|
||||
.replace(/[\xE6]/g, 'ae')
|
||||
.replace(/[\xE7]/g, 'c')
|
||||
.replace(/[\xE8-\xEB]/g, 'e')
|
||||
.replace(/[\xEC-\xEF]/g, 'i')
|
||||
.replace(/[\xF1]/g, 'n')
|
||||
.replace(/[\xF2-\xF6\xF8]/g, 'o')
|
||||
.replace(/[\xF9-\xFC]/g, 'u')
|
||||
.replace(/[\xFE]/g, 'p')
|
||||
.replace(/[\xFD\xFF]/g, 'y');
|
||||
}
|
||||
|
||||
return str;
|
||||
},
|
||||
|
||||
getVNodeProp(vnode, prop) {
|
||||
if (vnode) {
|
||||
let props = vnode.props;
|
||||
|
||||
if (props) {
|
||||
let kebabProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
|
||||
let propName = Object.prototype.hasOwnProperty.call(props, kebabProp) ? kebabProp : prop;
|
||||
|
||||
return vnode.type.extends.props[prop].type === Boolean && props[propName] === '' ? true : props[propName];
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
},
|
||||
|
||||
toFlatCase(str) {
|
||||
// convert snake, kebab, camel and pascal cases to flat case
|
||||
return this.isString(str) ? str.replace(/(-|_)/g, '').toLowerCase() : str;
|
||||
},
|
||||
|
||||
toKebabCase(str) {
|
||||
// convert snake, camel and pascal cases to kebab case
|
||||
return this.isString(str)
|
||||
? str
|
||||
.replace(/(_)/g, '-')
|
||||
.replace(/[A-Z]/g, (c, i) => (i === 0 ? c : '-' + c.toLowerCase()))
|
||||
.toLowerCase()
|
||||
: str;
|
||||
},
|
||||
|
||||
toCapitalCase(str) {
|
||||
return this.isString(str, { empty: false }) ? str[0].toUpperCase() + str.slice(1) : str;
|
||||
},
|
||||
|
||||
isEmpty(value) {
|
||||
return value === null || value === undefined || value === '' || (Array.isArray(value) && value.length === 0) || (!(value instanceof Date) && typeof value === 'object' && Object.keys(value).length === 0);
|
||||
},
|
||||
|
||||
isNotEmpty(value) {
|
||||
return !this.isEmpty(value);
|
||||
},
|
||||
|
||||
isFunction(value) {
|
||||
return !!(value && value.constructor && value.call && value.apply);
|
||||
},
|
||||
|
||||
isObject(value, empty = true) {
|
||||
return value instanceof Object && value.constructor === Object && (empty || Object.keys(value).length !== 0);
|
||||
},
|
||||
|
||||
isDate(value) {
|
||||
return value instanceof Date && value.constructor === Date;
|
||||
},
|
||||
|
||||
isArray(value, empty = true) {
|
||||
return Array.isArray(value) && (empty || value.length !== 0);
|
||||
},
|
||||
|
||||
isString(value, empty = true) {
|
||||
return typeof value === 'string' && (empty || value !== '');
|
||||
},
|
||||
|
||||
isPrintableCharacter(char = '') {
|
||||
return this.isNotEmpty(char) && char.length === 1 && char.match(/\S| /);
|
||||
},
|
||||
|
||||
/**
|
||||
* Firefox-v103 does not currently support the "findLast" method. It is stated that this method will be supported with Firefox-v104.
|
||||
* https://caniuse.com/mdn-javascript_builtins_array_findlast
|
||||
*/
|
||||
findLast(arr, callback) {
|
||||
let item;
|
||||
|
||||
if (this.isNotEmpty(arr)) {
|
||||
try {
|
||||
item = arr.findLast(callback);
|
||||
} catch {
|
||||
item = [...arr].reverse().find(callback);
|
||||
}
|
||||
}
|
||||
|
||||
return item;
|
||||
},
|
||||
|
||||
/**
|
||||
* Firefox-v103 does not currently support the "findLastIndex" method. It is stated that this method will be supported with Firefox-v104.
|
||||
* https://caniuse.com/mdn-javascript_builtins_array_findlastindex
|
||||
*/
|
||||
findLastIndex(arr, callback) {
|
||||
let index = -1;
|
||||
|
||||
if (this.isNotEmpty(arr)) {
|
||||
try {
|
||||
index = arr.findLastIndex(callback);
|
||||
} catch {
|
||||
index = arr.lastIndexOf([...arr].reverse().find(callback));
|
||||
}
|
||||
}
|
||||
|
||||
return index;
|
||||
},
|
||||
|
||||
sort(value1, value2, order = 1, comparator, nullSortOrder = 1) {
|
||||
const result = this.compare(value1, value2, comparator, order);
|
||||
let finalSortOrder = order;
|
||||
|
||||
// nullSortOrder == 1 means Excel like sort nulls at bottom
|
||||
if (this.isEmpty(value1) || this.isEmpty(value2)) {
|
||||
finalSortOrder = nullSortOrder === 1 ? order : nullSortOrder;
|
||||
}
|
||||
|
||||
return finalSortOrder * result;
|
||||
},
|
||||
|
||||
compare(value1, value2, comparator, order = 1) {
|
||||
let result = -1;
|
||||
const emptyValue1 = this.isEmpty(value1);
|
||||
const emptyValue2 = this.isEmpty(value2);
|
||||
|
||||
if (emptyValue1 && emptyValue2) result = 0;
|
||||
else if (emptyValue1) result = order;
|
||||
else if (emptyValue2) result = -order;
|
||||
else if (typeof value1 === 'string' && typeof value2 === 'string') result = comparator(value1, value2);
|
||||
else result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;
|
||||
|
||||
return result;
|
||||
},
|
||||
|
||||
localeComparator() {
|
||||
//performance gain using Int.Collator. It is not recommended to use localeCompare against large arrays.
|
||||
return new Intl.Collator(undefined, { numeric: true }).compare;
|
||||
},
|
||||
|
||||
nestedKeys(obj = {}, parentKey = '') {
|
||||
return Object.entries(obj).reduce((o, [key, value]) => {
|
||||
const currentKey = parentKey ? `${parentKey}.${key}` : key;
|
||||
|
||||
this.isObject(value) ? (o = o.concat(this.nestedKeys(value, currentKey))) : o.push(currentKey);
|
||||
|
||||
return o;
|
||||
}, []);
|
||||
},
|
||||
|
||||
stringify(value, indent = 2, currentIndent = 0) {
|
||||
const currentIndentStr = ' '.repeat(currentIndent);
|
||||
const nextIndentStr = ' '.repeat(currentIndent + indent);
|
||||
|
||||
if (this.isArray(value)) {
|
||||
return '[' + value.map((v) => this.stringify(v, indent, currentIndent + indent)).join(', ') + ']';
|
||||
} else if (this.isDate(value)) {
|
||||
return value.toISOString();
|
||||
} else if (this.isFunction(value)) {
|
||||
return value.toString();
|
||||
} else if (this.isObject(value)) {
|
||||
return (
|
||||
'{\n' +
|
||||
Object.entries(value)
|
||||
.map(([k, v]) => `${nextIndentStr}${k}: ${this.stringify(v, indent, currentIndent + indent)}`)
|
||||
.join(',\n') +
|
||||
`\n${currentIndentStr}` +
|
||||
'}'
|
||||
);
|
||||
} else {
|
||||
return JSON.stringify(value);
|
||||
}
|
||||
},
|
||||
|
||||
minifyCSS(css) {
|
||||
return css
|
||||
? css
|
||||
.replace(/\/\*(?:(?!\*\/)[\s\S])*\*\/|[\r\n\t]+/g, '')
|
||||
.replace(/ {2,}/g, ' ')
|
||||
.replace(/ ([{:}]) /g, '$1')
|
||||
.replace(/([;,]) /g, '$1')
|
||||
.replace(/ !/g, '!')
|
||||
.replace(/: /g, ':')
|
||||
: css;
|
||||
}
|
||||
};
|
|
@ -1,11 +0,0 @@
|
|||
const lastIds = {};
|
||||
|
||||
export default function (prefix = 'pv_id_') {
|
||||
if (!lastIds.hasOwnProperty(prefix)) {
|
||||
lastIds[prefix] = 0;
|
||||
}
|
||||
|
||||
lastIds[prefix]++;
|
||||
|
||||
return `${prefix}${lastIds[prefix]}`;
|
||||
}
|
|
@ -1,127 +0,0 @@
|
|||
export declare class ConnectedOverlayScrollHandler {
|
||||
constructor(element: any, listener?: () => void);
|
||||
bindScrollListener(): void;
|
||||
unbindScrollListener(): void;
|
||||
destroy(): void;
|
||||
}
|
||||
|
||||
export declare class DomHandler {
|
||||
static innerWidth(el: HTMLElement): number;
|
||||
static width(el: HTMLElement): number;
|
||||
static getWindowScrollTop(): number;
|
||||
static getWindowScrollLeft(): number;
|
||||
static getOuterWidth(el: HTMLElement, margin: boolean): number;
|
||||
static getOuterHeight(el: HTMLElement, margin: boolean): number;
|
||||
static getClientHeight(el: HTMLElement, margin: boolean): number;
|
||||
static getViewport(): { width: number; height: number };
|
||||
static getOffset(el: HTMLElement): { top: any; left: any };
|
||||
static index(el: HTMLElement): number;
|
||||
static addMultipleClasses(el: HTMLElement, classNames: string | string[]): void;
|
||||
static addRemoveClasses(el: HTMLElement, classNames: string | string[]): void;
|
||||
static addClass(el: HTMLElement, className: string): void;
|
||||
static removeClass(el: HTMLElement, className: string): void;
|
||||
static hasClass(el: HTMLElement, className: string): boolean;
|
||||
static addStyles(el: HTMLElement, styles: object): void;
|
||||
static find(el: HTMLElement, selector: string): any[];
|
||||
static findSingle(el: HTMLElement, selector: string): any;
|
||||
static createElement(type: string, attributes: object, ...children: any): HTMLElement;
|
||||
static setAttribute(el: HTMLElement, attribute: string, value: any): void;
|
||||
static setAttributes(el: HTMLElement, attributes: object): void;
|
||||
static getAttribute(el: HTMLElement, name: string): any;
|
||||
static isAttributeEquals(el: HTMLElement, name: string, value: any): boolean;
|
||||
static isAttributeNotEquals(el: HTMLElement, name: string, value: any): boolean;
|
||||
static getHeight(el: HTMLElement): number;
|
||||
static getWidth(el: HTMLElement): number;
|
||||
static absolutePosition(el: HTMLElement, target: HTMLElement): void;
|
||||
static relativePosition(el: HTMLElement, target: HTMLElement): void;
|
||||
static nestedPosition(el: HTMLElement, level: number): void;
|
||||
static getParents(el: HTMLElement, parents?: any[]): any[];
|
||||
static getScrollableParents(el: HTMLElement): any[];
|
||||
static getHiddenElementOuterHeight(el: HTMLElement): number;
|
||||
static getHiddenElementOuterWidth(el: HTMLElement): number;
|
||||
static getHiddenElementDimensions(el: HTMLElement): { width?: number; height?: number };
|
||||
static fadeIn(el: HTMLElement, duration: number): void;
|
||||
static fadeOut(el: HTMLElement, duration: number): void;
|
||||
static getUserAgent(): string;
|
||||
static appendChild(el: HTMLElement, target: HTMLElement): void;
|
||||
static scrollInView(container: HTMLElement, item: HTMLElement): void;
|
||||
static clearSelection(): void;
|
||||
static getSelection(): string | null;
|
||||
static calculateScrollbarWidth(): number;
|
||||
static calculateBodyScrollbarWidth(): number;
|
||||
static getBrowser(): object;
|
||||
static resolveUserAgent(): { browser: string; version: string };
|
||||
static isVisible(el: HTMLElement): boolean;
|
||||
static invokeElementMethod(el: HTMLElement, methodName: string, args: any): void;
|
||||
static isExist(el: HTMLElement): boolean;
|
||||
static isClient(): boolean;
|
||||
static focus(el: HTMLElement, options?: FocusOptions): void;
|
||||
static getFocusableElements(el: HTMLElement, selector?: string): any[];
|
||||
static getFirstFocusableElement(el: HTMLElement, selector?: string): any;
|
||||
static getLastFocusableElement(el: HTMLElement, selector?: string): any;
|
||||
static getPreviousElementSibling(el: HTMLElement, selector?: string): any;
|
||||
static getNextElementSibling(el: HTMLElement, selector?: string): any;
|
||||
static isClickable(el: HTMLElement): boolean;
|
||||
static applyStyle(el: HTMLElement, style: any): void;
|
||||
static isIOS(): boolean;
|
||||
static isAndroid(): boolean;
|
||||
static isTouchDevice(): boolean;
|
||||
static hasCSSAnimation(el: HTMLElement): boolean;
|
||||
static hasCSSTransition(el: HTMLElement): boolean;
|
||||
static exportCSV(csv: any, filename: string): void;
|
||||
static blockBodyScroll(className?: string): void;
|
||||
static unblockBodyScroll(className?: string): void;
|
||||
}
|
||||
|
||||
export declare class ObjectUtils {
|
||||
static equals(obj1: any, obj2: any, field: string): boolean;
|
||||
static deepEquals(a: any, b: any): boolean;
|
||||
static resolveFieldData(data: any, field: string): any;
|
||||
static filter(value: any, fields: any, filterValue: any): any;
|
||||
static reorderArray(value: any, from: number, to: number): void;
|
||||
static findIndexInList(value: any, list: any[], dataKey?: string): number;
|
||||
static contains(value: any, list: any[]): boolean;
|
||||
static insertIntoOrderedArray(item: any, index: number, arr: any[], sourceArr: any[]): void;
|
||||
static removeAccents(str: any): string;
|
||||
static toFlatCase(str: string): string;
|
||||
static toCapitalCase(str: string): string;
|
||||
static toKebabCase(str: string): string;
|
||||
static isEmpty(value: any): boolean;
|
||||
static isNotEmpty(value: any): boolean;
|
||||
static isFunction(value: any): boolean;
|
||||
static isObject(value: any, empty?: boolean): boolean;
|
||||
static isDate(value: any): boolean;
|
||||
static isArray(value: any, empty?: boolean): boolean;
|
||||
static isString(value: any, empty?: boolean): boolean;
|
||||
static isPrintableCharacter(char: string): boolean;
|
||||
static findLast(value: any[], callback: () => any): any;
|
||||
static findLastIndex(value: any[], callback: () => any): number;
|
||||
static sort(value1: any, value2: any, order: number, comparator: (a: any, b: any) => any, nullSortOrder: number): number;
|
||||
static compare(value1: any, value2: any, comparator: (a: any, b: any) => any, order: number): number;
|
||||
static nestedKeys(obj: object, parentKey?: string): string[];
|
||||
static stringify(value: any, indent?: number, currentIndent?: number): string;
|
||||
}
|
||||
|
||||
export declare class HelperSet {
|
||||
constructor(options: { init?: any; type?: string });
|
||||
add(instance: any): void;
|
||||
update(): void;
|
||||
delete(instance: any): void;
|
||||
clear(): void;
|
||||
get(parentInstance?: any, slots?: any): any[] | null | undefined;
|
||||
}
|
||||
|
||||
export declare namespace ZIndexUtils {
|
||||
export function get(el?: HTMLElement): number;
|
||||
export function set(key: string, el: HTMLElement, baseZIndex?: number): void;
|
||||
export function clear(el: HTMLElement): void;
|
||||
export function getCurrent(): number;
|
||||
}
|
||||
|
||||
export declare function UniqueComponentId(prefix?: string): string;
|
||||
|
||||
export declare function EventBus(): {
|
||||
on(type: string, fn: any): void;
|
||||
emit(type: string, evt?: any): void;
|
||||
off(type: string, fn: any): void;
|
||||
};
|
|
@ -1,9 +0,0 @@
|
|||
import ConnectedOverlayScrollHandler from './ConnectedOverlayScrollHandler';
|
||||
import DomHandler from './DomHandler';
|
||||
import EventBus from './EventBus';
|
||||
import HelperSet from './HelperSet';
|
||||
import ObjectUtils from './ObjectUtils';
|
||||
import UniqueComponentId from './UniqueComponentId';
|
||||
import ZIndexUtils from './ZIndexUtils';
|
||||
|
||||
export { ConnectedOverlayScrollHandler, DomHandler, EventBus, HelperSet, ObjectUtils, UniqueComponentId, ZIndexUtils };
|
|
@ -1,46 +0,0 @@
|
|||
function handler() {
|
||||
let zIndexes = [];
|
||||
|
||||
const generateZIndex = (key, autoZIndex, baseZIndex = 999) => {
|
||||
const lastZIndex = getLastZIndex(key, autoZIndex, baseZIndex);
|
||||
const newZIndex = lastZIndex.value + (lastZIndex.key === key ? 0 : baseZIndex) + 1;
|
||||
|
||||
zIndexes.push({ key, value: newZIndex });
|
||||
|
||||
return newZIndex;
|
||||
};
|
||||
|
||||
const revertZIndex = (zIndex) => {
|
||||
zIndexes = zIndexes.filter((obj) => obj.value !== zIndex);
|
||||
};
|
||||
|
||||
const getCurrentZIndex = (key, autoZIndex) => {
|
||||
return getLastZIndex(key, autoZIndex).value;
|
||||
};
|
||||
|
||||
const getLastZIndex = (key, autoZIndex, baseZIndex = 0) => {
|
||||
return [...zIndexes].reverse().find((obj) => (autoZIndex ? true : obj.key === key)) || { key, value: baseZIndex };
|
||||
};
|
||||
|
||||
const getZIndex = (el) => {
|
||||
return el ? parseInt(el.style.zIndex, 10) || 0 : 0;
|
||||
};
|
||||
|
||||
return {
|
||||
get: getZIndex,
|
||||
set: (key, el, baseZIndex) => {
|
||||
if (el) {
|
||||
el.style.zIndex = String(generateZIndex(key, true, baseZIndex));
|
||||
}
|
||||
},
|
||||
clear: (el) => {
|
||||
if (el) {
|
||||
revertZIndex(getZIndex(el));
|
||||
el.style.zIndex = '';
|
||||
}
|
||||
},
|
||||
getCurrent: (key) => getCurrentZIndex(key, true)
|
||||
};
|
||||
}
|
||||
|
||||
export default handler();
|
|
@ -1,5 +0,0 @@
|
|||
{
|
||||
"main": "./Utils.js",
|
||||
"module": "./Utils.js",
|
||||
"types": "./Utils.d.ts"
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
import { expect } from 'vitest';
|
||||
import ConnectedOverlayScrollHandler from '../ConnectedOverlayScrollHandler';
|
||||
import DomHandler from '../DomHandler';
|
||||
|
||||
describe('ConnectedOverlayScrollHandler', () => {
|
||||
it('When bindScrollListener triggered,getScrollableParents should be called', () => {
|
||||
const element = 'element';
|
||||
const listener = 'listener';
|
||||
|
||||
const connectedOverlayScrollHandler = new ConnectedOverlayScrollHandler(element, listener);
|
||||
|
||||
vi.spyOn(DomHandler, 'getScrollableParents').mockReturnValue([{ addEventListener: vi.fn() }, { addEventListener: vi.fn() }]);
|
||||
|
||||
connectedOverlayScrollHandler.bindScrollListener();
|
||||
|
||||
expect(DomHandler.getScrollableParents).toHaveBeenCalledWith(element);
|
||||
});
|
||||
|
||||
it('When destroy method triggered, unbindScrollListener should be called ', () => {
|
||||
const element = 'element';
|
||||
const listener = 'listener';
|
||||
|
||||
const connectedOverlayScrollHandler = new ConnectedOverlayScrollHandler(element, listener);
|
||||
|
||||
vi.spyOn(connectedOverlayScrollHandler, 'unbindScrollListener');
|
||||
|
||||
connectedOverlayScrollHandler.destroy();
|
||||
|
||||
expect(connectedOverlayScrollHandler.unbindScrollListener).toHaveBeenCalled();
|
||||
expect(connectedOverlayScrollHandler.element).toBeNull();
|
||||
expect(connectedOverlayScrollHandler.listener).toBeNull();
|
||||
});
|
||||
});
|
|
@ -1,762 +0,0 @@
|
|||
import { afterEach, expect } from 'vitest';
|
||||
import DomHandler from '../DomHandler';
|
||||
|
||||
let mockHtmlElement;
|
||||
const { window } = global;
|
||||
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
mockHtmlElement = null;
|
||||
global.navigator = {
|
||||
userAgent: 'testUserAgent'
|
||||
};
|
||||
|
||||
const testId = 'dummy-testId';
|
||||
|
||||
mockHtmlElement = document.createElement('div');
|
||||
mockHtmlElement.setAttribute('id', testId);
|
||||
document.body.appendChild(mockHtmlElement);
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
document.body.removeChild(mockHtmlElement);
|
||||
});
|
||||
|
||||
describe('DomHandler', () => {
|
||||
describe('innerWidth', () => {
|
||||
it('When el parameter is null, offsetWidth should be 0', () => {
|
||||
const innerWidth = DomHandler.innerWidth(null);
|
||||
|
||||
expect(innerWidth).toBe(0);
|
||||
});
|
||||
|
||||
it('When el parameter is html element, offsetWidth should be calculated', () => {
|
||||
mockHtmlElement.style.padding = '30px';
|
||||
|
||||
const innerWidth = DomHandler.innerWidth(mockHtmlElement);
|
||||
|
||||
expect(innerWidth).toBe(60);
|
||||
});
|
||||
});
|
||||
|
||||
describe('width', () => {
|
||||
it('When el parameter is null, innerwidth should be 0', () => {
|
||||
const width = DomHandler.width(null);
|
||||
|
||||
expect(width).toBe(0);
|
||||
});
|
||||
|
||||
it('When el parameter is html element, innerwidth should be calculated', () => {
|
||||
mockHtmlElement.style.padding = '30px';
|
||||
|
||||
const width = DomHandler.width(mockHtmlElement);
|
||||
|
||||
expect(width).toBe(-60);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getOuterWidth', () => {
|
||||
it('When el parameter is null, outerWidth should be 0', () => {
|
||||
const getOuterWidth = DomHandler.getOuterWidth(null, null);
|
||||
|
||||
expect(getOuterWidth).toBe(0);
|
||||
});
|
||||
|
||||
it('When el parameter is html element, outerWidth should be calculated', () => {
|
||||
mockHtmlElement.style['padding-left'] = '30px';
|
||||
|
||||
const getOuterWidth = DomHandler.getOuterWidth(mockHtmlElement, null);
|
||||
|
||||
expect(getOuterWidth).toBe(0);
|
||||
});
|
||||
|
||||
it('When el parameter is html element and margin parameter is not null, outerWidth should be calculated', () => {
|
||||
mockHtmlElement.style['margin-right'] = '30px';
|
||||
mockHtmlElement.style['margin-left'] = '30px';
|
||||
|
||||
const getOuterWidth = DomHandler.getOuterWidth(mockHtmlElement, '30px');
|
||||
|
||||
expect(getOuterWidth).toBe(60);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getOuterHeight', () => {
|
||||
it('When el parameter is null, outerHeight should be 0', () => {
|
||||
const getOuterHeight = DomHandler.getOuterHeight(null, null);
|
||||
|
||||
expect(getOuterHeight).toBe(0);
|
||||
});
|
||||
|
||||
it('When el parameter is html element, outerHeight should be calculated', () => {
|
||||
mockHtmlElement.style.margin = '30px';
|
||||
|
||||
const getOuterHeight = DomHandler.getOuterHeight(mockHtmlElement, null);
|
||||
|
||||
expect(getOuterHeight).toBe(0);
|
||||
});
|
||||
|
||||
it('When el parameter is html element and margin parameter is not null, outerHeight should be calculated', () => {
|
||||
mockHtmlElement.style.margin = '30px';
|
||||
|
||||
const getOuterHeight = DomHandler.getOuterHeight(mockHtmlElement, '30px');
|
||||
|
||||
expect(getOuterHeight).toBe(60);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getClientHeight', () => {
|
||||
it('When el parameter is null, clientHeight should be 0', () => {
|
||||
const getClientHeight = DomHandler.getClientHeight(null, null);
|
||||
|
||||
expect(getClientHeight).toBe(0);
|
||||
});
|
||||
|
||||
it('When el parameter is html element, clientHeight should be calculated', () => {
|
||||
mockHtmlElement.style.margin = '30px';
|
||||
|
||||
const clientHeight = DomHandler.getClientHeight(mockHtmlElement, null);
|
||||
|
||||
expect(clientHeight).toBe(0);
|
||||
});
|
||||
|
||||
it('When el parameter is html element and margin parameter is not null, clientHeight should be calculated', () => {
|
||||
mockHtmlElement.style.margin = '30px';
|
||||
|
||||
const clientHeight = DomHandler.getClientHeight(mockHtmlElement, '30px');
|
||||
|
||||
expect(clientHeight).toBe(60);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getViewport', () => {
|
||||
it('When innerWidth parameter is not null, width and height should be equal', () => {
|
||||
global.innerWidth = 500;
|
||||
global.innerHeight = 500;
|
||||
|
||||
const result = {
|
||||
height: 500,
|
||||
width: 500
|
||||
};
|
||||
|
||||
expect(DomHandler.getViewport()).toStrictEqual(result);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getOffset', () => {
|
||||
it('When el parameter is null, clientHeight should be equal to result', () => {
|
||||
const result = {
|
||||
top: 'auto',
|
||||
left: 'auto'
|
||||
};
|
||||
|
||||
expect(DomHandler.getOffset()).toStrictEqual(result);
|
||||
});
|
||||
|
||||
it('When el parameter is not null, offset should be calculated', () => {
|
||||
mockHtmlElement.getBoundingClientRect = vi.fn(() => ({
|
||||
top: 30,
|
||||
left: 30
|
||||
}));
|
||||
|
||||
const result = {
|
||||
top: 30,
|
||||
left: 30
|
||||
};
|
||||
|
||||
expect(DomHandler.getOffset(mockHtmlElement)).toStrictEqual(result);
|
||||
});
|
||||
});
|
||||
|
||||
describe('index', () => {
|
||||
it('When el parameter is null, index should be equal to -1', () => {
|
||||
expect(DomHandler.index()).toBe(-1);
|
||||
});
|
||||
|
||||
it('When el parameter is not null and mockHtmlElement is a child', () => {
|
||||
const mockParentElement = document.createElement('div');
|
||||
const mockChildElement = document.createElement('p');
|
||||
|
||||
mockParentElement.appendChild(mockChildElement);
|
||||
|
||||
expect(DomHandler.index(mockChildElement)).toBe(0);
|
||||
|
||||
mockParentElement.removeChild(mockChildElement);
|
||||
document.body.appendChild(mockParentElement);
|
||||
});
|
||||
|
||||
it('When el parameter is not null and mockHtmlElements parent has a nodetype 1 child', () => {
|
||||
const mockParentElement = document.createElement('div');
|
||||
const mockChild = document.createElement('p');
|
||||
const mockChild1 = document.createElement('p');
|
||||
|
||||
mockParentElement.appendChild(mockChild);
|
||||
mockParentElement.appendChild(mockChild1);
|
||||
|
||||
expect(DomHandler.index(mockChild1)).toBe(1);
|
||||
});
|
||||
});
|
||||
|
||||
describe('addMultipleClasses', () => {
|
||||
it('When classname parameter is not null, class should be added to element', () => {
|
||||
DomHandler.addMultipleClasses(mockHtmlElement, 'test');
|
||||
|
||||
expect(mockHtmlElement.classList.contains('test')).toBeTruthy();
|
||||
});
|
||||
|
||||
it('When classList is null, class should be added to element with className', () => {
|
||||
mockHtmlElement.classList = '';
|
||||
|
||||
DomHandler.addMultipleClasses(mockHtmlElement, 'test');
|
||||
|
||||
expect(mockHtmlElement.className).toBe('test');
|
||||
});
|
||||
});
|
||||
|
||||
describe('addMultipleClasses', () => {
|
||||
it('When classname parameter is not null, class should be added to element', () => {
|
||||
DomHandler.addMultipleClasses(mockHtmlElement, 'test');
|
||||
|
||||
expect(mockHtmlElement.classList.contains('test')).toBeTruthy();
|
||||
});
|
||||
|
||||
it('When classList is null, class should be added to element with className', () => {
|
||||
const div = {
|
||||
className: 'default'
|
||||
};
|
||||
|
||||
DomHandler.addMultipleClasses(div, 'test');
|
||||
|
||||
expect(div.className).toBe('default test');
|
||||
});
|
||||
});
|
||||
|
||||
describe('addClass', () => {
|
||||
it('When classname parameter is not null, class should be added to element', () => {
|
||||
DomHandler.addClass(mockHtmlElement, 'test');
|
||||
|
||||
expect(mockHtmlElement.classList.contains('test')).toBeTruthy();
|
||||
});
|
||||
|
||||
it('When classList is null, class should be added to element with className', () => {
|
||||
const div = {
|
||||
className: 'default'
|
||||
};
|
||||
|
||||
DomHandler.addClass(div, 'test');
|
||||
|
||||
expect(div.className).toBe('default test');
|
||||
});
|
||||
});
|
||||
|
||||
describe('removeClass', () => {
|
||||
it('When classname parameter is not null, class should be added to element', () => {
|
||||
DomHandler.addClass(mockHtmlElement, 'test');
|
||||
DomHandler.removeClass(mockHtmlElement, 'test');
|
||||
|
||||
expect(mockHtmlElement.classList.contains('test')).toBeFalsy();
|
||||
});
|
||||
|
||||
it('When classList is null, class should be added to element with className', () => {
|
||||
const div = {
|
||||
className: 'test default'
|
||||
};
|
||||
|
||||
DomHandler.removeClass(div, 'test');
|
||||
|
||||
expect(div.className.includes('test')).toBeFalsy();
|
||||
});
|
||||
});
|
||||
|
||||
describe('hasClass', () => {
|
||||
it('When element parameter is null, should be return false', () => {
|
||||
expect(DomHandler.hasClass(null, 'test')).toBeFalsy();
|
||||
});
|
||||
|
||||
it('When element is not null and element has a class, should be return true', () => {
|
||||
DomHandler.addClass(mockHtmlElement, 'test');
|
||||
|
||||
expect(DomHandler.hasClass(mockHtmlElement, 'test')).toBeTruthy();
|
||||
});
|
||||
|
||||
it('When element is not null and element has not a class, should be return false', () => {
|
||||
const div = {};
|
||||
|
||||
expect(DomHandler.hasClass(div, 'test')).toBeFalsy();
|
||||
});
|
||||
});
|
||||
|
||||
describe('find', () => {
|
||||
it('When element parameter is not a html element, should be return empty array', () => {
|
||||
expect(DomHandler.find('test', null)).toStrictEqual([]);
|
||||
});
|
||||
|
||||
it('When element parameter is a html element, should be return empty array', () => {
|
||||
const mockChild = document.createElement('p');
|
||||
|
||||
mockHtmlElement.appendChild(mockChild);
|
||||
|
||||
expect(DomHandler.find(mockHtmlElement, 'p')).not.toBe([]);
|
||||
|
||||
mockHtmlElement.removeChild(mockChild);
|
||||
});
|
||||
});
|
||||
|
||||
describe('findSingle', () => {
|
||||
it('When element parameter is not a html element, should be return null', () => {
|
||||
expect(DomHandler.findSingle('test', null)).toBe(null);
|
||||
});
|
||||
|
||||
it('When element parameter is a html element, should be return empty array', () => {
|
||||
const mockChild = document.createElement('p');
|
||||
|
||||
mockHtmlElement.appendChild(mockChild);
|
||||
|
||||
expect(DomHandler.findSingle(mockHtmlElement, 'p')).not.toBe(null);
|
||||
|
||||
mockHtmlElement.removeChild(mockChild);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getHeight', () => {
|
||||
it('When element parameter is not a html element, should be return 0', () => {
|
||||
expect(DomHandler.getHeight(null)).toBe(0);
|
||||
});
|
||||
|
||||
it('When element parameter is a html element, should be return calculated value', () => {
|
||||
mockHtmlElement.style.paddingTop = '10px';
|
||||
mockHtmlElement.style.paddingBottom = '10px';
|
||||
mockHtmlElement.style.borderTopWidth = '10px';
|
||||
mockHtmlElement.style.borderBottomWidth = '10px';
|
||||
mockHtmlElement.style.height = '100px';
|
||||
|
||||
expect(DomHandler.getHeight(mockHtmlElement)).toBe(-40);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getWidth', () => {
|
||||
it('When element parameter is not a html element, should be return 0', () => {
|
||||
expect(DomHandler.getWidth(null)).toBe(0);
|
||||
});
|
||||
|
||||
it('When element parameter is a html element, should be return calculated value', () => {
|
||||
mockHtmlElement.style.paddingRight = '10px';
|
||||
mockHtmlElement.style.paddingLeft = '10px';
|
||||
mockHtmlElement.style.borderLeftWidth = '10px';
|
||||
mockHtmlElement.style.borderRightWidth = '10px';
|
||||
mockHtmlElement.style.width = '100px';
|
||||
|
||||
expect(DomHandler.getWidth(mockHtmlElement)).toBe(-40);
|
||||
});
|
||||
});
|
||||
|
||||
describe('absolutePosition', () => {
|
||||
it('When element position bigger than viewport.height', () => {
|
||||
const element = document.createElement('div');
|
||||
|
||||
document.body.appendChild(element);
|
||||
const target = document.createElement('div');
|
||||
|
||||
target.getBoundingClientRect = () => {
|
||||
return {
|
||||
top: 300,
|
||||
height: 600
|
||||
};
|
||||
};
|
||||
|
||||
document.body.appendChild(target);
|
||||
DomHandler.absolutePosition(element, target);
|
||||
expect(element.style['transform-origin']).toBe('top');
|
||||
expect(element.style.top).toBe('300px');
|
||||
|
||||
document.body.removeChild(element);
|
||||
document.body.removeChild(target);
|
||||
});
|
||||
|
||||
it('When element position smaller than viewport.height', () => {
|
||||
const element = document.createElement('div');
|
||||
|
||||
document.body.appendChild(element);
|
||||
const target = document.createElement('div');
|
||||
|
||||
target.getBoundingClientRect = () => {
|
||||
return {
|
||||
top: 600,
|
||||
height: 600
|
||||
};
|
||||
};
|
||||
|
||||
document.body.appendChild(target);
|
||||
DomHandler.absolutePosition(element, target);
|
||||
expect(element.style['transform-origin']).toBe('bottom');
|
||||
expect(element.style.top).toBe('600px');
|
||||
|
||||
document.body.removeChild(element);
|
||||
document.body.removeChild(target);
|
||||
});
|
||||
});
|
||||
|
||||
describe('relativePosition', () => {
|
||||
it('When element position bigger than viewport.height', () => {
|
||||
const element = document.createElement('div');
|
||||
|
||||
document.body.appendChild(element);
|
||||
|
||||
const target = document.createElement('div');
|
||||
|
||||
target.getBoundingClientRect = () => {
|
||||
return {
|
||||
top: 300,
|
||||
height: 600
|
||||
};
|
||||
};
|
||||
|
||||
document.body.appendChild(target);
|
||||
|
||||
DomHandler.relativePosition(element, target);
|
||||
|
||||
expect(element.style['transform-origin']).toBe('top');
|
||||
|
||||
document.body.removeChild(element);
|
||||
document.body.removeChild(target);
|
||||
});
|
||||
|
||||
it('When element position smaller than viewport.height', () => {
|
||||
const element = document.createElement('div');
|
||||
|
||||
document.body.appendChild(element);
|
||||
|
||||
const target = document.createElement('div');
|
||||
|
||||
target.getBoundingClientRect = () => {
|
||||
return {
|
||||
top: 600,
|
||||
height: 600
|
||||
};
|
||||
};
|
||||
|
||||
document.body.appendChild(target);
|
||||
|
||||
DomHandler.relativePosition(element, target);
|
||||
|
||||
expect(element.style['transform-origin']).toBe('bottom');
|
||||
|
||||
document.body.removeChild(element);
|
||||
document.body.removeChild(target);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getParents', () => {
|
||||
it('When element has not any parent element', () => {
|
||||
const element = document.createElement('div');
|
||||
|
||||
expect(DomHandler.getParents(element)).toStrictEqual([]);
|
||||
});
|
||||
|
||||
it('When element has parent elements', () => {
|
||||
expect(DomHandler.getParents(mockHtmlElement).length).toBe(3);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getScrollableParents', () => {
|
||||
it('When element has not any scrollable parent element', () => {
|
||||
const element = document.createElement('div');
|
||||
|
||||
expect(DomHandler.getScrollableParents(element)).toStrictEqual([]);
|
||||
});
|
||||
|
||||
it('When element has scrollable parent elements', () => {
|
||||
const element = document.createElement('p');
|
||||
|
||||
mockHtmlElement.style.overflow = 'scroll';
|
||||
mockHtmlElement.style.height = '100px';
|
||||
mockHtmlElement.appendChild(element);
|
||||
expect(DomHandler.getScrollableParents(element).length).toBe(1);
|
||||
|
||||
mockHtmlElement.removeChild(element);
|
||||
});
|
||||
});
|
||||
describe('getHiddenElementOuterHeight', () => {
|
||||
it('When element is null or not html element', () => {
|
||||
expect(DomHandler.getHiddenElementOuterHeight(null)).toBe(0);
|
||||
});
|
||||
|
||||
it('When element is a html element, handler should be return a calculated offsetHeight', () => {
|
||||
expect(DomHandler.getHiddenElementOuterHeight(mockHtmlElement)).toBe(0);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getHiddenElementOuterWidth', () => {
|
||||
it('When element is null or not html element', () => {
|
||||
expect(DomHandler.getHiddenElementOuterWidth(null)).toBe(0);
|
||||
});
|
||||
|
||||
it('When element is a html element, handler should be return a calculated offsetWidth', () => {
|
||||
expect(DomHandler.getHiddenElementOuterWidth(mockHtmlElement)).toBe(0);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getHiddenElementDimensions', () => {
|
||||
it('When element is null or not html element', () => {
|
||||
expect(DomHandler.getHiddenElementDimensions(null)).toBe(0);
|
||||
});
|
||||
|
||||
it('When element is a html element, handler should be return a calculated offsetWidth and offsetHeight', () => {
|
||||
expect(DomHandler.getHiddenElementDimensions(mockHtmlElement)).toStrictEqual({ width: 0, height: 0 });
|
||||
});
|
||||
});
|
||||
|
||||
describe('getFirstFocusableElement', () => {
|
||||
it('When element has children, function should be return first child', () => {
|
||||
const element = document.createElement('div');
|
||||
const div1 = document.createElement('div');
|
||||
const div2 = document.createElement('div');
|
||||
|
||||
div1.setAttribute('tabindex', '0');
|
||||
div2.setAttribute('tabindex', '1');
|
||||
|
||||
element.appendChild(div1);
|
||||
element.appendChild(div2);
|
||||
|
||||
expect(DomHandler.getFirstFocusableElement(element, 'div')).toBe(div1);
|
||||
});
|
||||
|
||||
it('When element has not children, function should be return null', () => {
|
||||
const element = document.createElement('div');
|
||||
|
||||
expect(DomHandler.getFirstFocusableElement(element, 'div')).toBe(null);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getLastFocusableElement', () => {
|
||||
it('When element has children, function should be return last child', () => {
|
||||
const element = document.createElement('div');
|
||||
const div1 = document.createElement('div');
|
||||
const div2 = document.createElement('div');
|
||||
|
||||
div1.setAttribute('tabindex', '0');
|
||||
div2.setAttribute('tabindex', '1');
|
||||
|
||||
element.appendChild(div1);
|
||||
element.appendChild(div2);
|
||||
|
||||
expect(DomHandler.getLastFocusableElement(element, 'div')).toBe(div2);
|
||||
});
|
||||
|
||||
it('When element has not children, function should be return null', () => {
|
||||
const element = document.createElement('div');
|
||||
|
||||
expect(DomHandler.getLastFocusableElement(element, 'div')).toBe(null);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getNextFocusableElement', () => {
|
||||
it('When element has children, function should be return last child', () => {
|
||||
const element = document.createElement('div');
|
||||
const div1 = document.createElement('div');
|
||||
const div2 = document.createElement('div');
|
||||
|
||||
div1.setAttribute('tabindex', '0');
|
||||
div2.setAttribute('tabindex', '1');
|
||||
|
||||
element.appendChild(div1);
|
||||
element.appendChild(div2);
|
||||
|
||||
expect(DomHandler.getNextFocusableElement(element, div1, 'div')).toBe(div2);
|
||||
});
|
||||
|
||||
it('When element has not children, function should be return null', () => {
|
||||
const element = document.createElement('div');
|
||||
const div1 = document.createElement('div');
|
||||
|
||||
div1.setAttribute('tabindex', '-1');
|
||||
|
||||
element.appendChild(div1);
|
||||
|
||||
expect(DomHandler.getNextFocusableElement(element, div1, 'div')).toBe(null);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getUserAgent', () => {
|
||||
it('When element is null or not html element', () => {
|
||||
expect(DomHandler.getUserAgent()).toBe('testUserAgent');
|
||||
});
|
||||
});
|
||||
|
||||
describe('appendChild', () => {
|
||||
it('When target is a html element', () => {
|
||||
const element = document.createElement('p');
|
||||
const target = document.createElement('div');
|
||||
|
||||
vi.spyOn(DomHandler, 'isElement').mockReturnValue(true);
|
||||
|
||||
DomHandler.appendChild(element, target);
|
||||
expect(target.children.length).toBe(1);
|
||||
});
|
||||
|
||||
it('When target is a not a html element and has el and elElement', () => {
|
||||
const element = document.createElement('p');
|
||||
const target = {
|
||||
el: document.createElement('div'),
|
||||
elElement: document.createElement('div')
|
||||
};
|
||||
|
||||
vi.spyOn(DomHandler, 'isElement').mockReturnValue(false);
|
||||
|
||||
DomHandler.appendChild(element, target);
|
||||
expect(target.elElement.children.length).toBe(1);
|
||||
});
|
||||
|
||||
it('When target is a not a html element and has not el and elElement', () => {
|
||||
const element = 'Test Element';
|
||||
const target = 'Test Target';
|
||||
|
||||
vi.spyOn(DomHandler, 'isElement').mockReturnValue(false);
|
||||
|
||||
expect(() => DomHandler.appendChild(element, target)).toThrowError();
|
||||
});
|
||||
});
|
||||
|
||||
describe('clearSelection', () => {
|
||||
it('When getSelection has empty variable', () => {
|
||||
global.window.getSelection = vi.fn().mockReturnValue({
|
||||
removeAllRanges: vi.fn(),
|
||||
empty: vi.fn()
|
||||
});
|
||||
|
||||
DomHandler.clearSelection();
|
||||
expect(global.window.getSelection().empty).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
describe('getSelection', () => {
|
||||
it('When getSelection is not empty', () => {
|
||||
global.window.getSelection = vi.fn().mockReturnValue('testSelection');
|
||||
|
||||
expect(DomHandler.getSelection()).toBe('testSelection');
|
||||
});
|
||||
});
|
||||
|
||||
describe('isVisible', () => {
|
||||
it('When getSelection is not empty', () => {
|
||||
mockHtmlElement.style.display = 'none';
|
||||
|
||||
expect(DomHandler.isVisible(mockHtmlElement)).toBeFalsy();
|
||||
});
|
||||
});
|
||||
|
||||
describe('resolveUserAgent', () => {
|
||||
it('When getSelection is not empty', () => {
|
||||
expect(DomHandler.resolveUserAgent()).toStrictEqual({ browser: '', version: '0' });
|
||||
});
|
||||
});
|
||||
|
||||
describe('calculateScrollbarWidth', () => {
|
||||
it('When getSelection is not empty', () => {
|
||||
const scrollDiv = document.createElement('div');
|
||||
|
||||
DomHandler.addStyles(scrollDiv, {
|
||||
width: '100px',
|
||||
height: '100px',
|
||||
overflow: 'scroll',
|
||||
position: 'absolute',
|
||||
top: '-9999px'
|
||||
});
|
||||
document.body.appendChild(scrollDiv);
|
||||
const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
|
||||
|
||||
document.body.removeChild(scrollDiv);
|
||||
|
||||
expect(DomHandler.calculateScrollbarWidth()).toBe(scrollbarWidth);
|
||||
});
|
||||
});
|
||||
|
||||
describe('isExist', () => {
|
||||
it('When element is null or undefined', () => {
|
||||
expect(DomHandler.isExist(null)).toBeFalsy();
|
||||
expect(DomHandler.isExist(undefined)).toBeFalsy();
|
||||
});
|
||||
|
||||
it('When element is a html element and has a parent element', () => {
|
||||
const element = document.createElement('div');
|
||||
const parent = document.createElement('div');
|
||||
|
||||
parent.appendChild(element);
|
||||
|
||||
expect(DomHandler.isExist(element)).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
||||
describe('isClient', () => {
|
||||
it('When window is undefined', () => {
|
||||
delete global.window;
|
||||
|
||||
expect(DomHandler.isClient()).toBeFalsy();
|
||||
|
||||
global.window = window;
|
||||
});
|
||||
});
|
||||
|
||||
describe('focuse', () => {
|
||||
it('When element focused, document active element should be changed', () => {
|
||||
const element = document.createElement('input');
|
||||
|
||||
mockHtmlElement.appendChild(element);
|
||||
|
||||
DomHandler.focus(element);
|
||||
|
||||
expect(document.activeElement.tagName).toBe('INPUT');
|
||||
|
||||
mockHtmlElement.removeChild(element);
|
||||
});
|
||||
});
|
||||
|
||||
describe('applyStyle', () => {
|
||||
it('When style parametre is an object', () => {
|
||||
mockHtmlElement.style.color = 'red';
|
||||
|
||||
DomHandler.applyStyle(mockHtmlElement, { color: 'blue' });
|
||||
|
||||
expect(mockHtmlElement.style.color).toBe('blue');
|
||||
});
|
||||
|
||||
it('When style parametre is a string', () => {
|
||||
const style = 'color:red';
|
||||
|
||||
DomHandler.applyStyle(mockHtmlElement, style);
|
||||
|
||||
expect(mockHtmlElement.style.color).toBe('red');
|
||||
});
|
||||
});
|
||||
|
||||
describe('isIOS', () => {
|
||||
it('When style parametre is an object', () => {
|
||||
global.window.navigator.userAgent = 'iPhone';
|
||||
|
||||
expect(DomHandler.isIOS()).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
||||
describe('isIOS', () => {
|
||||
it('When style parametre is an object', () => {
|
||||
global.window.navigator.userAgent = 'iPhone';
|
||||
|
||||
expect(DomHandler.isIOS()).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
||||
describe('isAndroid', () => {
|
||||
it('When style parametre is an object', () => {
|
||||
global.window.navigator.userAgent = 'android';
|
||||
|
||||
expect(DomHandler.isAndroid()).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
||||
describe('isTouchDevice', () => {
|
||||
it('When style parametre is an object', () => {
|
||||
global.window.navigator.userAgent = 'iPhone';
|
||||
|
||||
expect(DomHandler.isTouchDevice()).toBeFalsy();
|
||||
});
|
||||
});
|
||||
});
|
|
@ -1,24 +0,0 @@
|
|||
import EventBus from '../EventBus';
|
||||
|
||||
describe('EventBus', () => {
|
||||
it('When eventbus is on, callback should be emitted', () => {
|
||||
const eventBus = new EventBus();
|
||||
const callback = vi.fn();
|
||||
|
||||
eventBus.on('test', callback);
|
||||
eventBus.emit('test');
|
||||
|
||||
expect(callback).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('When eventbus is off, callback should be emitted', () => {
|
||||
const eventBus = new EventBus();
|
||||
const callback = vi.fn();
|
||||
|
||||
eventBus.on('test', callback);
|
||||
eventBus.off('test', callback);
|
||||
eventBus.emit('test');
|
||||
|
||||
expect(callback).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
Loading…
Reference in New Issue