@webiny/admin-ui 6.2.0 → 6.3.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Accordion/Accordion.d.ts +1 -1
- package/Accordion/Accordion.mdx +437 -463
- package/Accordion/components/AccordionContent.js.map +1 -1
- package/Alert/Alert.d.ts +1 -1
- package/Alert/Alert.js.map +1 -1
- package/Alert/Alert.mdx +80 -83
- package/AutoComplete/AutoComplete.mdx +63 -55
- package/Avatar/Avatar.d.ts +1 -1
- package/Avatar/Avatar.js.map +1 -1
- package/Avatar/Avatar.mdx +52 -43
- package/Button/Button.d.ts +1 -1
- package/Button/Button.js.map +1 -1
- package/Button/Button.mdx +50 -42
- package/Button/IconButton.d.ts +1 -1
- package/Button/IconButton.js.map +1 -1
- package/Card/components/CardContent.d.ts +1 -1
- package/Card/components/CardTitle.d.ts +1 -1
- package/Checkbox/Checkbox.mdx +51 -49
- package/Checkbox/primitives/CheckboxPrimitive.d.ts +1 -1
- package/CheckboxGroup/CheckboxGroup.mdx +51 -53
- package/CodeEditor/CodeEditor.mdx +44 -43
- package/ColorPicker/ColorPicker.mdx +41 -40
- package/Command/components/Item.d.ts +1 -1
- package/Command/components/Item.js.map +1 -1
- package/DataTable/DataTable.mdx +537 -542
- package/DataTable/components/ColumnSorter.d.ts +1 -1
- package/DataTable/components/ColumnSorter.js.map +1 -1
- package/Dialog/Dialog.js.map +1 -1
- package/Dialog/components/DialogContent.d.ts +1 -1
- package/Dialog/components/DialogContent.js +1 -1
- package/Dialog/components/DialogContent.js.map +1 -1
- package/Dialog/components/DialogFooter.d.ts +1 -1
- package/Dialog/components/DialogFooter.js.map +1 -1
- package/Dialog/components/DialogTitle.d.ts +1 -1
- package/Drawer/Drawer.js.map +1 -1
- package/Drawer/Drawer.mdx +73 -64
- package/Drawer/components/DrawerContent.d.ts +1 -1
- package/Drawer/components/DrawerContent.js.map +1 -1
- package/DropdownMenu/DropdownMenu.js.map +1 -1
- package/DropdownMenu/DropdownMenu.mdx +155 -256
- package/DropdownMenu/components/DropdownMenuCheckboxItem.js.map +1 -1
- package/DropdownMenu/components/DropdownMenuLabel.js.map +1 -1
- package/FilePicker/FilePicker.mdx +69 -69
- package/FilePicker/primitives/FilePickerPrimitive.d.ts +19 -19
- package/FilePicker/primitives/FilePickerPrimitive.js.map +1 -1
- package/FilePicker/primitives/components/Trigger.d.ts +1 -1
- package/FilePicker/primitives/components/previews/TextOnlyPreview/TextOnlyPreview.d.ts +1 -1
- package/FilePicker/primitives/components/previews/variants.d.ts +1 -1
- package/FilePicker/primitives/components/types.js.map +1 -1
- package/FormComponent/Description.d.ts +1 -1
- package/FormComponent/ErrorMessage.d.ts +1 -1
- package/FormComponent/Note.d.ts +1 -1
- package/Grid/Grid.d.ts +2 -2
- package/Grid/Grid.js.map +1 -1
- package/Grid/Grid.mdx +111 -121
- package/HeaderBar/HeaderBar.mdx +98 -99
- package/Heading/Heading.d.ts +1 -1
- package/Heading/Heading.js.map +1 -1
- package/Heading/Heading.mdx +63 -58
- package/Icon/Icon.d.ts +1 -1
- package/Icon/Icon.js.map +1 -1
- package/Icon/Icon.mdx +79 -147
- package/IconPicker/IconPicker.mdx +66 -64
- package/IconPicker/primitives/IconPickerPrimitive.d.ts +1 -1
- package/IconPicker/primitives/components/IconPickerTrigger.d.ts +1 -1
- package/Image/Image.js.map +1 -1
- package/Input/Input.mdx +67 -56
- package/Input/InputPrimitive.d.ts +1 -1
- package/Label/Label.d.ts +1 -1
- package/Label/Label.js.map +1 -1
- package/Label/Label.mdx +42 -42
- package/Label/components/LabelDescription.d.ts +1 -1
- package/Label/components/LabelRequired.d.ts +1 -1
- package/Label/components/LabelValue.d.ts +1 -1
- package/Link/Link.d.ts +1 -1
- package/Link/Link.mdx +129 -116
- package/List/List.d.ts +1 -1
- package/List/List.js.map +1 -1
- package/List/List.mdx +317 -329
- package/List/components/ListItem.d.ts +1 -1
- package/List/components/ListItem.js.map +1 -1
- package/Loader/Loader.d.ts +2 -2
- package/Loader/Loader.js.map +1 -1
- package/Loader/Loader.mdx +96 -91
- package/MultiAutoComplete/MultiAutoComplete.mdx +52 -51
- package/MultiAutoComplete/primitives/components/MultiAutoCompleteInput.d.ts +1 -1
- package/MultiAutoComplete/primitives/presenters/MultiAutoCompleteListOptionsPresenter.js.map +1 -1
- package/MultiAutoComplete/primitives/presenters/MultiAutoCompleteListOptionsPresenterWithUniqueValues.js.map +1 -1
- package/MultiAutoComplete/primitives/presenters/MultiAutoCompleteSelectedOptionsPresenter.js.map +1 -1
- package/MultiAutoComplete/primitives/presenters/MultiAutoCompleteTemporaryOptionPresenter.js.map +1 -1
- package/MultiFilePicker/MultiFilePicker.mdx +84 -80
- package/MultiFilePicker/primitives/MultiFilePickerPrimitive.js.map +1 -1
- package/Popover/Popover.mdx +112 -118
- package/Popover/primitives/components/PopoverArrow.d.ts +1 -1
- package/Popover/primitives/components/PopoverContent.d.ts +1 -1
- package/RadioGroup/RadioGroup.mdx +62 -59
- package/RadioGroup/primitives/RadioGroupPrimitive.js.map +1 -1
- package/RangeSlider/RangeSlider.mdx +48 -47
- package/RangeSlider/primitives/RangeSliderPrimitive.js.map +1 -1
- package/RangeSlider/primitives/components/RangeSliderValue.d.ts +1 -1
- package/RangeSlider/primitives/components/RangeSliderValue.js.map +1 -1
- package/ScrollArea/ScrollArea.js.map +1 -1
- package/SegmentedControl/SegmentedControl.mdx +59 -59
- package/SegmentedControl/primitives/SegmentedControlPrimitive.d.ts +1 -1
- package/SegmentedControl/primitives/SegmentedControlPrimitive.js.map +1 -1
- package/Select/Select.mdx +52 -43
- package/Select/primitives/components/SelectTrigger.d.ts +1 -1
- package/Select/primitives/components/SelectTrigger.js.map +1 -1
- package/Select/primitives/presenters/SelectPresenter.d.ts +1 -1
- package/Separator/Separator.d.ts +1 -1
- package/Separator/Separator.mdx +139 -150
- package/Sidebar/Sidebar.js.map +1 -1
- package/Sidebar/Sidebar.mdx +66 -88
- package/Sidebar/components/items/SidebarMenuSubItemIndentation.d.ts +1 -1
- package/Sidebar/components/items/SidebarMenuSubItemIndentation.js.map +1 -1
- package/Skeleton/Skeleton.d.ts +1 -1
- package/Skeleton/Skeleton.js.map +1 -1
- package/Skeleton/Skeleton.mdx +37 -37
- package/Slider/Slider.mdx +48 -47
- package/Slider/primitives/SliderPrimitive.js.map +1 -1
- package/Slider/primitives/components/SliderSideValue.d.ts +1 -1
- package/Slider/primitives/components/SliderSideValue.js.map +1 -1
- package/Slider/primitives/components/SliderTooltip.d.ts +1 -1
- package/SteppedProgress/components/SteppedProgressIcon.d.ts +1 -1
- package/SteppedProgress/components/SteppedProgressIcon.js.map +1 -1
- package/SteppedProgress/components/SteppedProgressIndicator.d.ts +1 -1
- package/SteppedProgress/components/SteppedProgressIndicator.js.map +1 -1
- package/Switch/Switch.mdx +44 -42
- package/Switch/primitives/SwitchPrimitive.d.ts +1 -1
- package/Table/Table.d.ts +1 -1
- package/Table/Table.js.map +1 -1
- package/Table/components/Direction.d.ts +1 -1
- package/Table/components/Direction.js.map +1 -1
- package/Table/components/Header.d.ts +1 -1
- package/Table/components/Header.js.map +1 -1
- package/Table/components/Resizer.d.ts +1 -1
- package/Table/components/Resizer.js.map +1 -1
- package/Table/components/Row.d.ts +1 -1
- package/Table/components/Row.js.map +1 -1
- package/Tabs/Tabs.mdx +297 -292
- package/Tabs/components/Content.d.ts +1 -1
- package/Tabs/components/List.d.ts +1 -1
- package/Tabs/components/Trigger.d.ts +1 -1
- package/Tag/Tag.d.ts +1 -1
- package/Tag/Tag.js.map +1 -1
- package/Tag/Tag.mdx +68 -64
- package/Tags/primitives/TagsPrimitive.js.map +1 -1
- package/Text/Text.d.ts +1 -1
- package/Text/Text.mdx +54 -48
- package/Textarea/Textarea.mdx +49 -39
- package/Textarea/TextareaPrimitive.d.ts +1 -1
- package/Textarea/TextareaPrimitive.js.map +1 -1
- package/Toast/Toast.mdx +63 -53
- package/Toast/components/ToastRoot.d.ts +1 -1
- package/Tooltip/Tooltip.mdx +197 -198
- package/Tooltip/components/TooltipArrow.d.ts +1 -1
- package/Tooltip/components/TooltipContent.d.ts +1 -1
- package/Tree/components/Item.d.ts +1 -1
- package/Tree/useTree.d.ts +1 -1
- package/Widget/components/WidgetContent.d.ts +1 -1
- package/package.json +15 -15
|
@@ -5,7 +5,7 @@ declare const listItemVariant: (props?: ({
|
|
|
5
5
|
activated?: boolean | null | undefined;
|
|
6
6
|
selected?: boolean | null | undefined;
|
|
7
7
|
clickable?: boolean | null | undefined;
|
|
8
|
-
} & import("class-variance-authority/
|
|
8
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
9
9
|
interface ListItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title">, VariantProps<typeof listItemVariant> {
|
|
10
10
|
title: React.ReactNode;
|
|
11
11
|
actions?: React.ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","cn","cva","makeDecoratable","withStaticProps","Text","ListItemAction","ListItemHandle","ListItemIcon","listItemVariant","variants","disabled","true","activated","selected","clickable","DecoratableListItem","actions","children","className","description","handle","icon","colorMark","sidePadding","onClick","title","props","paddingClasses","createElement","Object","assign","tabIndex","Boolean","style","backgroundColor","size","as","ListItem","Action","Handle","Icon"],"sources":["ListItem.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn, cva, makeDecoratable, withStaticProps, type VariantProps } from \"~/utils.js\";\nimport { Text } from \"~/Text/index.js\";\nimport { ListItemAction } from \"./ListItemAction.js\";\nimport { ListItemHandle } from \"./ListItemHandle.js\";\nimport { ListItemIcon } from \"./ListItemIcon.js\";\n\nconst listItemVariant = cva(\n [\n \"w-full flex items-center\",\n \"group-[.list-background-base]:bg-neutral-base\",\n \"group-[.list-background-light]:bg-neutral-light\",\n \"group-[.list-variant-container]:rounded-lg\",\n \"group-[.list-variant-underline]:border-b-sm group-[.list-variant-underline]:border-b-neutral-dimmed\",\n \"hover:bg-neutral-dimmed!\",\n \"focus-visible:outline-none focus-visible:ring-sm focus-visible:ring-inset focus-visible:ring-primary-dimmed\"\n ],\n {\n variants: {\n disabled: {\n true: \"pointer-events-none opacity-50\"\n },\n activated: {\n true: \"bg-neutral-light!\"\n },\n selected: {\n true: \"bg-neutral-light!\"\n },\n clickable: {\n true: \"cursor-pointer\"\n }\n }\n }\n);\n\ninterface ListItemProps\n extends
|
|
1
|
+
{"version":3,"names":["React","cn","cva","makeDecoratable","withStaticProps","Text","ListItemAction","ListItemHandle","ListItemIcon","listItemVariant","variants","disabled","true","activated","selected","clickable","DecoratableListItem","actions","children","className","description","handle","icon","colorMark","sidePadding","onClick","title","props","paddingClasses","createElement","Object","assign","tabIndex","Boolean","style","backgroundColor","size","as","ListItem","Action","Handle","Icon"],"sources":["ListItem.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn, cva, makeDecoratable, withStaticProps, type VariantProps } from \"~/utils.js\";\nimport { Text } from \"~/Text/index.js\";\nimport { ListItemAction } from \"./ListItemAction.js\";\nimport { ListItemHandle } from \"./ListItemHandle.js\";\nimport { ListItemIcon } from \"./ListItemIcon.js\";\n\nconst listItemVariant = cva(\n [\n \"w-full flex items-center\",\n \"group-[.list-background-base]:bg-neutral-base\",\n \"group-[.list-background-light]:bg-neutral-light\",\n \"group-[.list-variant-container]:rounded-lg\",\n \"group-[.list-variant-underline]:border-b-sm group-[.list-variant-underline]:border-b-neutral-dimmed\",\n \"hover:bg-neutral-dimmed!\",\n \"focus-visible:outline-none focus-visible:ring-sm focus-visible:ring-inset focus-visible:ring-primary-dimmed\"\n ],\n {\n variants: {\n disabled: {\n true: \"pointer-events-none opacity-50\"\n },\n activated: {\n true: \"bg-neutral-light!\"\n },\n selected: {\n true: \"bg-neutral-light!\"\n },\n clickable: {\n true: \"cursor-pointer\"\n }\n }\n }\n);\n\ninterface ListItemProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, \"title\">,\n VariantProps<typeof listItemVariant> {\n title: React.ReactNode;\n actions?: React.ReactNode;\n description?: React.ReactNode;\n handle?: React.ReactNode;\n icon?: React.ReactNode;\n colorMark?: string;\n sidePadding?: \"md\" | \"lg\";\n}\n\nconst DecoratableListItem = ({\n actions,\n children,\n className,\n description,\n activated,\n disabled,\n selected,\n handle,\n icon,\n colorMark,\n sidePadding = \"md\",\n onClick,\n title,\n ...props\n}: ListItemProps) => {\n const paddingClasses = sidePadding === \"md\" ? \"px-md\" : \"pl-lg pr-md\";\n\n return (\n <div\n {...props}\n tabIndex={0}\n className={cn(\n listItemVariant({\n disabled,\n activated,\n selected,\n clickable: Boolean(onClick)\n }),\n className\n )}\n >\n {handle}\n {colorMark && (\n <div\n style={{ backgroundColor: colorMark }}\n className={\"block w-[4px] h-[48px] rounded-lg ml-sm flex-shrink-0\"}\n />\n )}\n <div\n className={cn(\n \"w-full flex justify-between items-center py-sm-extra\",\n paddingClasses\n )}\n >\n <div className={\"w-full flex items-center gap-md\"} onClick={onClick}>\n {icon && <div>{icon}</div>}\n <div className={\"flex flex-col gap-xxs grow text-left\"}>\n <Text\n size={\"md\"}\n as={\"div\"}\n className={\"font-semibold text-neutral-primary\"}\n >\n {title}\n </Text>\n <Text size={\"sm\"} as={\"div\"} className={\"text-neutral-strong\"}>\n {description}\n </Text>\n </div>\n </div>\n {actions && <div className={\"flex items-center gap-xs-plus\"}>{actions}</div>}\n </div>\n {children}\n </div>\n );\n};\n\nconst ListItem = withStaticProps(makeDecoratable(\"ListItem\", DecoratableListItem), {\n Action: ListItemAction,\n Handle: ListItemHandle,\n Icon: ListItemIcon\n});\n\nexport { ListItem, type ListItemProps };\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,EAAE,EAAEC,GAAG,EAAEC,eAAe,EAAEC,eAAe;AAClD,SAASC,IAAI;AACb,SAASC,cAAc;AACvB,SAASC,cAAc;AACvB,SAASC,YAAY;AAErB,MAAMC,eAAe,GAAGP,GAAG,CACvB,CACI,0BAA0B,EAC1B,+CAA+C,EAC/C,iDAAiD,EACjD,4CAA4C,EAC5C,qGAAqG,EACrG,0BAA0B,EAC1B,6GAA6G,CAChH,EACD;EACIQ,QAAQ,EAAE;IACNC,QAAQ,EAAE;MACNC,IAAI,EAAE;IACV,CAAC;IACDC,SAAS,EAAE;MACPD,IAAI,EAAE;IACV,CAAC;IACDE,QAAQ,EAAE;MACNF,IAAI,EAAE;IACV,CAAC;IACDG,SAAS,EAAE;MACPH,IAAI,EAAE;IACV;EACJ;AACJ,CACJ,CAAC;AAeD,MAAMI,mBAAmB,GAAGA,CAAC;EACzBC,OAAO;EACPC,QAAQ;EACRC,SAAS;EACTC,WAAW;EACXP,SAAS;EACTF,QAAQ;EACRG,QAAQ;EACRO,MAAM;EACNC,IAAI;EACJC,SAAS;EACTC,WAAW,GAAG,IAAI;EAClBC,OAAO;EACPC,KAAK;EACL,GAAGC;AACQ,CAAC,KAAK;EACjB,MAAMC,cAAc,GAAGJ,WAAW,KAAK,IAAI,GAAG,OAAO,GAAG,aAAa;EAErE,oBACIxB,KAAA,CAAA6B,aAAA,QAAAC,MAAA,CAAAC,MAAA,KACQJ,KAAK;IACTK,QAAQ,EAAE,CAAE;IACZb,SAAS,EAAElB,EAAE,CACTQ,eAAe,CAAC;MACZE,QAAQ;MACRE,SAAS;MACTC,QAAQ;MACRC,SAAS,EAAEkB,OAAO,CAACR,OAAO;IAC9B,CAAC,CAAC,EACFN,SACJ;EAAE,IAEDE,MAAM,EACNE,SAAS,iBACNvB,KAAA,CAAA6B,aAAA;IACIK,KAAK,EAAE;MAAEC,eAAe,EAAEZ;IAAU,CAAE;IACtCJ,SAAS,EAAE;EAAwD,CACtE,CACJ,eACDnB,KAAA,CAAA6B,aAAA;IACIV,SAAS,EAAElB,EAAE,CACT,sDAAsD,EACtD2B,cACJ;EAAE,gBAEF5B,KAAA,CAAA6B,aAAA;IAAKV,SAAS,EAAE,iCAAkC;IAACM,OAAO,EAAEA;EAAQ,GAC/DH,IAAI,iBAAItB,KAAA,CAAA6B,aAAA,cAAMP,IAAU,CAAC,eAC1BtB,KAAA,CAAA6B,aAAA;IAAKV,SAAS,EAAE;EAAuC,gBACnDnB,KAAA,CAAA6B,aAAA,CAACxB,IAAI;IACD+B,IAAI,EAAE,IAAK;IACXC,EAAE,EAAE,KAAM;IACVlB,SAAS,EAAE;EAAqC,GAE/CO,KACC,CAAC,eACP1B,KAAA,CAAA6B,aAAA,CAACxB,IAAI;IAAC+B,IAAI,EAAE,IAAK;IAACC,EAAE,EAAE,KAAM;IAAClB,SAAS,EAAE;EAAsB,GACzDC,WACC,CACL,CACJ,CAAC,EACLH,OAAO,iBAAIjB,KAAA,CAAA6B,aAAA;IAAKV,SAAS,EAAE;EAAgC,GAAEF,OAAa,CAC1E,CAAC,EACLC,QACA,CAAC;AAEd,CAAC;AAED,MAAMoB,QAAQ,GAAGlC,eAAe,CAACD,eAAe,CAAC,UAAU,EAAEa,mBAAmB,CAAC,EAAE;EAC/EuB,MAAM,EAAEjC,cAAc;EACtBkC,MAAM,EAAEjC,cAAc;EACtBkC,IAAI,EAAEjC;AACV,CAAC,CAAC;AAEF,SAAS8B,QAAQ","ignoreList":[]}
|
package/Loader/Loader.d.ts
CHANGED
|
@@ -2,10 +2,10 @@ import React from "react";
|
|
|
2
2
|
import { type VariantProps } from "../utils.js";
|
|
3
3
|
declare const loaderVariants: (props?: ({
|
|
4
4
|
size?: "sm" | "md" | "lg" | "xs" | null | undefined;
|
|
5
|
-
} & import("class-variance-authority/
|
|
5
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
6
|
declare const loaderBaseVariant: (props?: ({
|
|
7
7
|
variant?: "accent" | "subtle" | "negative" | null | undefined;
|
|
8
|
-
} & import("class-variance-authority/
|
|
8
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
9
9
|
interface LoaderProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof loaderVariants>, VariantProps<typeof loaderBaseVariant> {
|
|
10
10
|
max?: number;
|
|
11
11
|
value?: number;
|
package/Loader/Loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","useEffect","Text","cn","cva","makeDecoratable","loaderVariants","variants","size","xs","sm","md","lg","defaultVariants","loaderBaseVariant","variant","accent","subtle","negative","loaderActiveVariant","DecoratableLoader","max","min","value","indeterminate","className","text","props","circumference","Math","PI","percentPx","currentPercent","round","rotation","setRotation","interval","setInterval","prev","clearInterval","createElement","Object","assign","xmlns","fill","strokeWidth","viewBox","cx","cy","r","strokeDashoffset","style","strokeDasharray","transition","transformOrigin","transitionProperty","transform","as","Loader"],"sources":["Loader.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport { Text } from \"~/Text/index.js\";\nimport { cn, cva, makeDecoratable, type VariantProps } from \"~/utils.js\";\n\nconst loaderVariants = cva(\"relative translate\", {\n variants: {\n size: {\n xs: \"size-md\",\n sm: \"size-md-plus\",\n md: \"size-lg\",\n lg: \"size-[40px]\"\n }\n },\n defaultVariants: {\n size: \"md\"\n }\n});\n\nconst loaderBaseVariant = cva(\"stroke \", {\n variants: {\n variant: {\n accent: \"opacity-10 text-neutral-primary\",\n subtle: \"opacity-10 text-neutral-primary\",\n negative: \"opacity-20 text-neutral-light\"\n }\n },\n defaultVariants: {\n variant: \"accent\"\n }\n});\n\nconst loaderActiveVariant = cva(\"opacity-100\", {\n variants: {\n variant: {\n accent: \"text-accent-primary\",\n subtle: \"opacity-50 text-neutral-primary\",\n negative: \"text-neutral-light\"\n }\n },\n defaultVariants: {\n variant: \"accent\"\n }\n});\n\ninterface LoaderProps\n extends
|
|
1
|
+
{"version":3,"names":["React","useState","useEffect","Text","cn","cva","makeDecoratable","loaderVariants","variants","size","xs","sm","md","lg","defaultVariants","loaderBaseVariant","variant","accent","subtle","negative","loaderActiveVariant","DecoratableLoader","max","min","value","indeterminate","className","text","props","circumference","Math","PI","percentPx","currentPercent","round","rotation","setRotation","interval","setInterval","prev","clearInterval","createElement","Object","assign","xmlns","fill","strokeWidth","viewBox","cx","cy","r","strokeDashoffset","style","strokeDasharray","transition","transformOrigin","transitionProperty","transform","as","Loader"],"sources":["Loader.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport { Text } from \"~/Text/index.js\";\nimport { cn, cva, makeDecoratable, type VariantProps } from \"~/utils.js\";\n\nconst loaderVariants = cva(\"relative translate\", {\n variants: {\n size: {\n xs: \"size-md\",\n sm: \"size-md-plus\",\n md: \"size-lg\",\n lg: \"size-[40px]\"\n }\n },\n defaultVariants: {\n size: \"md\"\n }\n});\n\nconst loaderBaseVariant = cva(\"stroke \", {\n variants: {\n variant: {\n accent: \"opacity-10 text-neutral-primary\",\n subtle: \"opacity-10 text-neutral-primary\",\n negative: \"opacity-20 text-neutral-light\"\n }\n },\n defaultVariants: {\n variant: \"accent\"\n }\n});\n\nconst loaderActiveVariant = cva(\"opacity-100\", {\n variants: {\n variant: {\n accent: \"text-accent-primary\",\n subtle: \"opacity-50 text-neutral-primary\",\n negative: \"text-neutral-light\"\n }\n },\n defaultVariants: {\n variant: \"accent\"\n }\n});\n\ninterface LoaderProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof loaderVariants>,\n VariantProps<typeof loaderBaseVariant> {\n max?: number;\n value?: number;\n min?: number;\n className?: string;\n indeterminate?: boolean;\n text?: React.ReactNode;\n}\n\nconst DecoratableLoader = ({\n max = 100,\n min = 0,\n value = 66,\n indeterminate = true,\n className,\n size,\n variant,\n text,\n ...props\n}: LoaderProps) => {\n const circumference = 2 * Math.PI * 45;\n const percentPx = circumference / 100;\n const currentPercent = Math.round(((value - min) / (max - min)) * 100);\n\n const [rotation, setRotation] = useState(0);\n useEffect(() => {\n let interval: ReturnType<typeof setInterval>;\n if (indeterminate) {\n // Rotate the loader by 10 degrees every 30ms when indeterminate\n interval = setInterval(() => {\n setRotation(prev => (prev + 10) % 360);\n }, 30);\n } else {\n setRotation(0);\n }\n return () => clearInterval(interval);\n }, [indeterminate]);\n\n return (\n <div {...props} className={\"text-center flex flex-col items-center\"}>\n <div className={cn(loaderVariants({ size }), className)}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n className=\"size-full stroke-current\"\n strokeWidth=\"12\"\n viewBox=\"0 0 100 100\"\n >\n <circle\n cx=\"50\"\n cy=\"50\"\n r=\"44\"\n strokeDashoffset=\"0\"\n className={cn(loaderBaseVariant({ variant }))}\n style={{\n strokeDasharray: `${circumference}px ${circumference}px`,\n transition: \"all 1s ease 0s\",\n transformOrigin: \"50px 50px\"\n }}\n />\n <circle\n cx=\"50\"\n cy=\"50\"\n r=\"44\"\n strokeDashoffset=\"0\"\n className={cn(loaderActiveVariant({ variant }))}\n style={{\n strokeDasharray: `${currentPercent * percentPx}px ${circumference}px`,\n transition: indeterminate ? \"none\" : \"500ms ease 0s\",\n transitionProperty: indeterminate\n ? \"transform\"\n : \"stroke-dasharray, transform\",\n transform: indeterminate\n ? `rotate(${rotation}deg)` // Rotate when indeterminate\n : \"rotate(-90deg)\",\n transformOrigin: \"50px 50px\"\n }}\n />\n </svg>\n </div>\n {text && (\n <Text as={\"div\"} className={\"text-neutral-strong w-full pt-sm-plus\"}>\n {text}\n </Text>\n )}\n </div>\n );\n};\n\nconst Loader = makeDecoratable(\"Loader\", DecoratableLoader);\n\nexport { Loader, type LoaderProps };\n"],"mappings":"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","ignoreList":[]}
|
package/Loader/Loader.mdx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Canvas, Meta, Controls } from
|
|
1
|
+
import { Canvas, Meta, Controls } from "@storybook/addon-docs/blocks";
|
|
2
2
|
|
|
3
|
-
import * as LoaderStories from
|
|
4
|
-
import * as OverlayLoaderStories from
|
|
3
|
+
import * as LoaderStories from "./Loader.stories";
|
|
4
|
+
import * as OverlayLoaderStories from "./OverlayLoader.stories";
|
|
5
5
|
|
|
6
6
|
<Meta title="Components/Loader" />
|
|
7
7
|
|
|
@@ -10,8 +10,8 @@ import * as OverlayLoaderStories from './OverlayLoader.stories';
|
|
|
10
10
|
The Loader components provide visual feedback to users when content is loading or an operation is in progress.
|
|
11
11
|
Webiny offers two loader components:
|
|
12
12
|
|
|
13
|
-
1.
|
|
14
|
-
2.
|
|
13
|
+
1. - **Loader** - A standalone circular progress indicator.
|
|
14
|
+
2. - **OverlayLoader** - The OverlayLoader covers its parent container with a semi-transparent overlay, typically used to indicate a loading state while keeping the background content visible but inactive. Please refer below for more examples.
|
|
15
15
|
|
|
16
16
|
## Loader
|
|
17
17
|
|
|
@@ -22,32 +22,27 @@ import React from "react";
|
|
|
22
22
|
import { Loader } from "@webiny/admin-ui";
|
|
23
23
|
|
|
24
24
|
const LoaderExample = () => {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
text="Loading..."
|
|
32
|
-
/>
|
|
33
|
-
</div>
|
|
34
|
-
);
|
|
35
|
-
};
|
|
25
|
+
return (
|
|
26
|
+
|
|
27
|
+
<div className="flex flex-col items-center gap-4">
|
|
28
|
+
<Loader size="md" variant="accent" indeterminate={true} text="Loading..." />
|
|
29
|
+
</div>
|
|
30
|
+
); };
|
|
36
31
|
|
|
37
32
|
export default LoaderExample;
|
|
38
33
|
|
|
39
34
|
` } }
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
35
|
+
additionalActions={[
|
|
36
|
+
{
|
|
37
|
+
title: 'Open in GitHub',
|
|
38
|
+
onClick: () => {
|
|
39
|
+
window.open(
|
|
40
|
+
'https://github.com/webiny/webiny-js/blob/feat/new-admin-ui/packages/admin-ui/src/Loader/Loader.tsx',
|
|
41
|
+
'_blank'
|
|
42
|
+
);
|
|
43
|
+
},
|
|
44
|
+
}
|
|
45
|
+
]}
|
|
51
46
|
/>
|
|
52
47
|
|
|
53
48
|
<Controls of={LoaderStories.Documentation} />
|
|
@@ -57,16 +52,11 @@ import React from "react";
|
|
|
57
52
|
import { Loader } from "@webiny/admin-ui";
|
|
58
53
|
|
|
59
54
|
const LoaderExample = () => {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
indeterminate={true}
|
|
66
|
-
text="Loading..."
|
|
67
|
-
/>
|
|
68
|
-
</div>
|
|
69
|
-
);
|
|
55
|
+
return (
|
|
56
|
+
<div className="flex flex-col items-center gap-4">
|
|
57
|
+
<Loader size="md" variant="accent" indeterminate={true} text="Loading..." />
|
|
58
|
+
</div>
|
|
59
|
+
);
|
|
70
60
|
};
|
|
71
61
|
|
|
72
62
|
export default LoaderExample;
|
|
@@ -81,7 +71,8 @@ import React from "react";
|
|
|
81
71
|
import { Loader } from "@webiny/admin-ui";
|
|
82
72
|
|
|
83
73
|
const ExtraSmallLoaderExample = () => (
|
|
84
|
-
|
|
74
|
+
|
|
75
|
+
<Loader size="xs" />
|
|
85
76
|
);
|
|
86
77
|
|
|
87
78
|
export default ExtraSmallLoaderExample;
|
|
@@ -92,7 +83,8 @@ import React from "react";
|
|
|
92
83
|
import { Loader } from "@webiny/admin-ui";
|
|
93
84
|
|
|
94
85
|
const SmallLoaderExample = () => (
|
|
95
|
-
|
|
86
|
+
|
|
87
|
+
<Loader size="sm" />
|
|
96
88
|
);
|
|
97
89
|
|
|
98
90
|
export default SmallLoaderExample;
|
|
@@ -103,7 +95,8 @@ import React from "react";
|
|
|
103
95
|
import { Loader } from "@webiny/admin-ui";
|
|
104
96
|
|
|
105
97
|
const MediumLoaderExample = () => (
|
|
106
|
-
|
|
98
|
+
|
|
99
|
+
<Loader size="md" />
|
|
107
100
|
);
|
|
108
101
|
|
|
109
102
|
export default MediumLoaderExample;
|
|
@@ -114,7 +107,8 @@ import React from "react";
|
|
|
114
107
|
import { Loader } from "@webiny/admin-ui";
|
|
115
108
|
|
|
116
109
|
const LargeLoaderExample = () => (
|
|
117
|
-
|
|
110
|
+
|
|
111
|
+
<Loader size="lg" />
|
|
118
112
|
);
|
|
119
113
|
|
|
120
114
|
export default LargeLoaderExample;
|
|
@@ -129,7 +123,8 @@ import React from "react";
|
|
|
129
123
|
import { Loader } from "@webiny/admin-ui";
|
|
130
124
|
|
|
131
125
|
const AccentLoaderExample = () => (
|
|
132
|
-
|
|
126
|
+
|
|
127
|
+
<Loader variant="accent" />
|
|
133
128
|
);
|
|
134
129
|
|
|
135
130
|
export default AccentLoaderExample;
|
|
@@ -140,7 +135,8 @@ import React from "react";
|
|
|
140
135
|
import { Loader } from "@webiny/admin-ui";
|
|
141
136
|
|
|
142
137
|
const SubtleLoaderExample = () => (
|
|
143
|
-
|
|
138
|
+
|
|
139
|
+
<Loader variant="subtle" />
|
|
144
140
|
);
|
|
145
141
|
|
|
146
142
|
export default SubtleLoaderExample;
|
|
@@ -151,9 +147,10 @@ import React from "react";
|
|
|
151
147
|
import { Loader } from "@webiny/admin-ui";
|
|
152
148
|
|
|
153
149
|
const NegativeLoaderExample = () => (
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
150
|
+
|
|
151
|
+
<div className="bg-primary p-md rounded-md">
|
|
152
|
+
<Loader variant="negative" />
|
|
153
|
+
</div>
|
|
157
154
|
);
|
|
158
155
|
|
|
159
156
|
export default NegativeLoaderExample;
|
|
@@ -168,7 +165,7 @@ import React, { useState, useEffect } from "react";
|
|
|
168
165
|
import { Loader } from "@webiny/admin-ui";
|
|
169
166
|
|
|
170
167
|
const ControlledProgressExample = () => {
|
|
171
|
-
|
|
168
|
+
const [value, setValue] = useState(0);
|
|
172
169
|
|
|
173
170
|
useEffect(() => {
|
|
174
171
|
const interval = setInterval(() => {
|
|
@@ -190,6 +187,7 @@ const ControlledProgressExample = () => {
|
|
|
190
187
|
text={"Loading " + value + "%"}
|
|
191
188
|
/>
|
|
192
189
|
);
|
|
190
|
+
|
|
193
191
|
};
|
|
194
192
|
|
|
195
193
|
export default ControlledProgressExample;
|
|
@@ -204,7 +202,8 @@ import React from "react";
|
|
|
204
202
|
import { Loader } from "@webiny/admin-ui";
|
|
205
203
|
|
|
206
204
|
const LoaderWithTextExample = () => (
|
|
207
|
-
|
|
205
|
+
|
|
206
|
+
<Loader text="Loading..." />
|
|
208
207
|
);
|
|
209
208
|
|
|
210
209
|
export default LoaderWithTextExample;
|
|
@@ -219,34 +218,30 @@ import React from "react";
|
|
|
219
218
|
import { OverlayLoader } from "@webiny/admin-ui";
|
|
220
219
|
|
|
221
220
|
const OverlayLoaderExample = () => {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
</div>
|
|
232
|
-
</div>
|
|
233
|
-
);
|
|
234
|
-
};
|
|
221
|
+
return (
|
|
222
|
+
|
|
223
|
+
<div className="relative h-64 w-full bg-neutral-light rounded-md p-4">
|
|
224
|
+
<OverlayLoader size="lg" variant="accent" text="Loading content..." />
|
|
225
|
+
<div className="h-full flex items-center justify-center">
|
|
226
|
+
<p className="text-neutral-strong">Content is loading...</p>
|
|
227
|
+
</div>
|
|
228
|
+
</div>
|
|
229
|
+
); };
|
|
235
230
|
|
|
236
231
|
export default OverlayLoaderExample;
|
|
237
232
|
|
|
238
233
|
` } }
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
234
|
+
additionalActions={[
|
|
235
|
+
{
|
|
236
|
+
title: 'Open in GitHub',
|
|
237
|
+
onClick: () => {
|
|
238
|
+
window.open(
|
|
239
|
+
'https://github.com/webiny/webiny-js/blob/feat/new-admin-ui/packages/admin-ui/src/Loader/OverlayLoader.tsx',
|
|
240
|
+
'_blank'
|
|
241
|
+
);
|
|
242
|
+
},
|
|
243
|
+
}
|
|
244
|
+
]}
|
|
250
245
|
/>
|
|
251
246
|
|
|
252
247
|
<Controls of={OverlayLoaderStories.Documentation} />
|
|
@@ -256,10 +251,12 @@ import React from "react";
|
|
|
256
251
|
import { OverlayLoader } from "@webiny/admin-ui";
|
|
257
252
|
|
|
258
253
|
const DefaultOverlayLoaderExample = () => (
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
254
|
+
<div>
|
|
255
|
+
<OverlayLoader />
|
|
256
|
+
The OverlayLoader component covers its parent container with a semi-transparent overlay,
|
|
257
|
+
typically used to indicate a loading state while keeping the background content visible but
|
|
258
|
+
inactive.
|
|
259
|
+
</div>
|
|
263
260
|
);
|
|
264
261
|
|
|
265
262
|
export default DefaultOverlayLoaderExample;
|
|
@@ -272,10 +269,12 @@ import React from "react";
|
|
|
272
269
|
import { OverlayLoader } from "@webiny/admin-ui";
|
|
273
270
|
|
|
274
271
|
const DefaultOverlayLoaderExample = () => (
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
272
|
+
|
|
273
|
+
<div>
|
|
274
|
+
<OverlayLoader />
|
|
275
|
+
The OverlayLoader component covers its parent container with a semi-transparent overlay, typically
|
|
276
|
+
used to indicate a loading state while keeping the background content visible but inactive.
|
|
277
|
+
</div>
|
|
279
278
|
);
|
|
280
279
|
|
|
281
280
|
export default DefaultOverlayLoaderExample;
|
|
@@ -288,10 +287,12 @@ import React from "react";
|
|
|
288
287
|
import { OverlayLoader } from "@webiny/admin-ui";
|
|
289
288
|
|
|
290
289
|
const OverlayLoaderWithTextExample = () => (
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
290
|
+
|
|
291
|
+
<div>
|
|
292
|
+
<OverlayLoader text="Loading..." />
|
|
293
|
+
The OverlayLoader component covers its parent container with a semi-transparent overlay, typically
|
|
294
|
+
used to indicate a loading state while keeping the background content visible but inactive.
|
|
295
|
+
</div>
|
|
295
296
|
);
|
|
296
297
|
|
|
297
298
|
export default OverlayLoaderWithTextExample;
|
|
@@ -300,10 +301,12 @@ export default OverlayLoaderWithTextExample;
|
|
|
300
301
|
## Anatomy
|
|
301
302
|
|
|
302
303
|
### Construction
|
|
303
|
-
|
|
304
|
+
|
|
305
|
+
<img src="/images/storybook/loader/construction.png" alt="Construction" />
|
|
304
306
|
|
|
305
307
|
### Style
|
|
306
|
-
|
|
308
|
+
|
|
309
|
+
<img src="/images/storybook/loader/style.png" alt="Style" />
|
|
307
310
|
|
|
308
311
|
### Type
|
|
309
312
|
|
|
@@ -311,16 +314,18 @@ A **determinate** circular loader visually represents progress with a circular a
|
|
|
311
314
|
|
|
312
315
|
An **indeterminate loader** does not display exact progress but continuously animates, signaling that a process is ongoing without a known completion time.
|
|
313
316
|
|
|
314
|
-
<img src="/images/storybook/loader/type.png" alt="Type"/>
|
|
317
|
+
<img src="/images/storybook/loader/type.png" alt="Type" />
|
|
315
318
|
|
|
316
319
|
### Size
|
|
317
|
-
|
|
320
|
+
|
|
321
|
+
<img src="/images/storybook/loader/size.png" alt="Size" />
|
|
318
322
|
|
|
319
323
|
### Background Overlay
|
|
320
|
-
|
|
324
|
+
|
|
325
|
+
<img src="/images/storybook/loader/background-overlay.png" alt="Background Overlay" />
|
|
321
326
|
|
|
322
327
|
## Usage
|
|
323
328
|
|
|
324
|
-
<img src="/images/storybook/loader/usage-1.png" alt="Usage"/>
|
|
329
|
+
<img src="/images/storybook/loader/usage-1.png" alt="Usage" />
|
|
325
330
|
|
|
326
|
-
<img src="/images/storybook/loader/usage-2.png" alt="Usage"/>
|
|
331
|
+
<img src="/images/storybook/loader/usage-2.png" alt="Usage" />
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Canvas, Meta, Controls } from
|
|
1
|
+
import { Canvas, Meta, Controls } from "@storybook/addon-docs/blocks";
|
|
2
2
|
|
|
3
|
-
import * as MultiAutoCompleteStories from
|
|
3
|
+
import * as MultiAutoCompleteStories from "./MultiAutoComplete.stories";
|
|
4
4
|
|
|
5
5
|
<Meta of={MultiAutoCompleteStories} />
|
|
6
6
|
|
|
@@ -51,25 +51,26 @@ const [validation, setValidation] = useState({ isValid: true, message: "" });
|
|
|
51
51
|
/>
|
|
52
52
|
</div>
|
|
53
53
|
);
|
|
54
|
+
|
|
54
55
|
};
|
|
55
56
|
|
|
56
57
|
export default MultiAutoCompleteExample;
|
|
57
58
|
|
|
58
59
|
` } }
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
60
|
+
additionalActions={[
|
|
61
|
+
{
|
|
62
|
+
title: 'Open in GitHub',
|
|
63
|
+
onClick: () => {
|
|
64
|
+
window.open(
|
|
65
|
+
'https://github.com/webiny/webiny-js/blob/feat/new-admin-ui/packages/admin-ui/src/MultiAutoComplete/MultiAutoComplete.tsx',
|
|
66
|
+
'_blank'
|
|
67
|
+
);
|
|
68
|
+
},
|
|
69
|
+
}
|
|
70
|
+
]}
|
|
70
71
|
/>
|
|
71
72
|
|
|
72
|
-
<Controls of={MultiAutoCompleteStories.Documentation}/>
|
|
73
|
+
<Controls of={MultiAutoCompleteStories.Documentation} />
|
|
73
74
|
|
|
74
75
|
## Usage
|
|
75
76
|
|
|
@@ -78,43 +79,43 @@ import React, { useState } from "react";
|
|
|
78
79
|
import { MultiAutoComplete } from "@webiny/admin-ui";
|
|
79
80
|
|
|
80
81
|
const MultiAutoCompleteExample = () => {
|
|
81
|
-
const [values, setValues] = useState<string[]>([]);
|
|
82
|
-
const [validation, setValidation] = useState({ isValid: true, message: "" });
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
82
|
+
const [values, setValues] = useState<string[]>([]);
|
|
83
|
+
const [validation, setValidation] = useState({ isValid: true, message: "" });
|
|
84
|
+
|
|
85
|
+
const handleValidation = () => {
|
|
86
|
+
if (values.length === 0) {
|
|
87
|
+
setValidation({ isValid: false, message: "Please select at least one option" });
|
|
88
|
+
} else {
|
|
89
|
+
setValidation({ isValid: true, message: "" });
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
const timeZones = [
|
|
94
|
+
"Eastern Standard Time (EST)",
|
|
95
|
+
"Central Standard Time (CST)",
|
|
96
|
+
"Pacific Standard Time (PST)",
|
|
97
|
+
"Greenwich Mean Time (GMT)"
|
|
98
|
+
];
|
|
99
|
+
|
|
100
|
+
return (
|
|
101
|
+
<div>
|
|
102
|
+
<MultiAutoComplete
|
|
103
|
+
label="Time Zones"
|
|
104
|
+
description="Select one or more time zones"
|
|
105
|
+
placeholder="Search or select time zones"
|
|
106
|
+
options={timeZones}
|
|
107
|
+
values={values}
|
|
108
|
+
onValuesChange={newValues => {
|
|
109
|
+
setValues(newValues);
|
|
110
|
+
handleValidation();
|
|
111
|
+
}}
|
|
112
|
+
validation={validation}
|
|
113
|
+
allowFreeInput={true}
|
|
114
|
+
required={true}
|
|
115
|
+
note="You can add custom time zones if needed"
|
|
116
|
+
/>
|
|
117
|
+
</div>
|
|
118
|
+
);
|
|
118
119
|
};
|
|
119
120
|
|
|
120
121
|
export default MultiAutoCompleteExample;
|
|
@@ -4,7 +4,7 @@ import type { CommandOptionFormatted } from "../../../Command/index.js";
|
|
|
4
4
|
import { type VariantProps } from "../../../utils.js";
|
|
5
5
|
declare const multiAutoCompleteInputVariants: (props?: ({
|
|
6
6
|
disabled?: boolean | null | undefined;
|
|
7
|
-
} & import("class-variance-authority/
|
|
7
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
8
8
|
type MultiAutoCompleteInputProps = VariantProps<typeof multiAutoCompleteInputVariants> & InputPrimitiveProps & {
|
|
9
9
|
changeValue: (value: string) => void;
|
|
10
10
|
closeList: () => void;
|
package/MultiAutoComplete/primitives/presenters/MultiAutoCompleteListOptionsPresenter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["makeAutoObservable","CommandOptionFormatter","ListCache","MultiAutoCompleteListOptionsPresenter","open","loadedOptions","emptyMessage","loadingMessage","initialMessage","options","constructor","init","params","clear","addItems","vm","getItems","map","option","format","empty","hasItems","setListOpenState","setLoadedOptions","loaded","setSelectedOption","value","updateItems","selected","removeSelectedOption","resetSelectedOptions","addOption"],"sources":["MultiAutoCompleteListOptionsPresenter.ts"],"sourcesContent":["import { makeAutoObservable } from \"mobx\";\nimport type { CommandOption } from \"~/Command/domain/CommandOption.js\";\nimport type { CommandOptionFormatted } from \"~/Command/domain/CommandOptionFormatted.js\";\nimport { CommandOptionFormatter } from \"~/Command/domain/CommandOptionFormatter.js\";\nimport { ListCache } from \"../../domains/index.js\";\n\nexport interface IMultiAutoCompleteListOptionsPresenterParams {\n options?: CommandOption[];\n emptyMessage?: any;\n loadingMessage?: any;\n initialMessage?: any;\n}\n\nexport interface IMultiAutoCompleteListOptionsPresenter {\n vm: {\n options: CommandOptionFormatted[];\n emptyMessage: any;\n loadingMessage: any;\n open: boolean;\n empty: boolean;\n };\n init: (params: IMultiAutoCompleteListOptionsPresenterParams) => void;\n setListOpenState: (open: boolean) => void;\n setLoadedOptions: (loaded: boolean) => void;\n addOption: (option: CommandOption) => void;\n setSelectedOption: (value: string) => void;\n removeSelectedOption: (value: string) => void;\n resetSelectedOptions: () => void;\n}\n\nexport class MultiAutoCompleteListOptionsPresenter
|
|
1
|
+
{"version":3,"names":["makeAutoObservable","CommandOptionFormatter","ListCache","MultiAutoCompleteListOptionsPresenter","open","loadedOptions","emptyMessage","loadingMessage","initialMessage","options","constructor","init","params","clear","addItems","vm","getItems","map","option","format","empty","hasItems","setListOpenState","setLoadedOptions","loaded","setSelectedOption","value","updateItems","selected","removeSelectedOption","resetSelectedOptions","addOption"],"sources":["MultiAutoCompleteListOptionsPresenter.ts"],"sourcesContent":["import { makeAutoObservable } from \"mobx\";\nimport type { CommandOption } from \"~/Command/domain/CommandOption.js\";\nimport type { CommandOptionFormatted } from \"~/Command/domain/CommandOptionFormatted.js\";\nimport { CommandOptionFormatter } from \"~/Command/domain/CommandOptionFormatter.js\";\nimport { ListCache } from \"../../domains/index.js\";\n\nexport interface IMultiAutoCompleteListOptionsPresenterParams {\n options?: CommandOption[];\n emptyMessage?: any;\n loadingMessage?: any;\n initialMessage?: any;\n}\n\nexport interface IMultiAutoCompleteListOptionsPresenter {\n vm: {\n options: CommandOptionFormatted[];\n emptyMessage: any;\n loadingMessage: any;\n open: boolean;\n empty: boolean;\n };\n init: (params: IMultiAutoCompleteListOptionsPresenterParams) => void;\n setListOpenState: (open: boolean) => void;\n setLoadedOptions: (loaded: boolean) => void;\n addOption: (option: CommandOption) => void;\n setSelectedOption: (value: string) => void;\n removeSelectedOption: (value: string) => void;\n resetSelectedOptions: () => void;\n}\n\nexport class MultiAutoCompleteListOptionsPresenter implements IMultiAutoCompleteListOptionsPresenter {\n private open = false;\n private loadedOptions = false;\n private emptyMessage = \"No results.\";\n private loadingMessage = \"Loading...\";\n private initialMessage = \"Start typing to find an option.\";\n private options = new ListCache<CommandOption>();\n\n constructor() {\n makeAutoObservable(this);\n }\n\n init(params: IMultiAutoCompleteListOptionsPresenterParams) {\n this.options.clear();\n params.options && this.options.addItems(params.options);\n this.emptyMessage = params.emptyMessage || this.emptyMessage;\n this.loadingMessage = params.loadingMessage || this.loadingMessage;\n this.initialMessage = params.initialMessage || this.initialMessage;\n }\n\n get vm() {\n return {\n options: this.options.getItems().map(option => CommandOptionFormatter.format(option)),\n emptyMessage: this.loadedOptions ? this.emptyMessage : this.initialMessage,\n loadingMessage: this.loadingMessage,\n open: this.open,\n empty: !this.options.hasItems()\n };\n }\n\n setListOpenState = (open: boolean) => {\n this.open = open;\n };\n\n setLoadedOptions = (loaded: boolean) => {\n this.loadedOptions = loaded;\n };\n\n setSelectedOption = (value: string) => {\n this.options.updateItems(option => {\n if (option.value === value) {\n option.selected = true;\n }\n\n return option;\n });\n };\n\n removeSelectedOption = (value: string) => {\n this.options.updateItems(option => {\n if (option.value === value) {\n option.selected = false;\n }\n\n return option;\n });\n };\n\n resetSelectedOptions = () => {\n this.options.updateItems(option => {\n option.selected = false;\n return option;\n });\n };\n\n addOption = (option: CommandOption) => {\n this.options.addItems([option]);\n };\n}\n"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,MAAM;AAGzC,SAASC,sBAAsB;AAC/B,SAASC,SAAS;AA0BlB,OAAO,MAAMC,qCAAqC,CAAmD;EACzFC,IAAI,GAAG,KAAK;EACZC,aAAa,GAAG,KAAK;EACrBC,YAAY,GAAG,aAAa;EAC5BC,cAAc,GAAG,YAAY;EAC7BC,cAAc,GAAG,iCAAiC;EAClDC,OAAO,GAAG,IAAIP,SAAS,CAAgB,CAAC;EAEhDQ,WAAWA,CAAA,EAAG;IACVV,kBAAkB,CAAC,IAAI,CAAC;EAC5B;EAEAW,IAAIA,CAACC,MAAoD,EAAE;IACvD,IAAI,CAACH,OAAO,CAACI,KAAK,CAAC,CAAC;IACpBD,MAAM,CAACH,OAAO,IAAI,IAAI,CAACA,OAAO,CAACK,QAAQ,CAACF,MAAM,CAACH,OAAO,CAAC;IACvD,IAAI,CAACH,YAAY,GAAGM,MAAM,CAACN,YAAY,IAAI,IAAI,CAACA,YAAY;IAC5D,IAAI,CAACC,cAAc,GAAGK,MAAM,CAACL,cAAc,IAAI,IAAI,CAACA,cAAc;IAClE,IAAI,CAACC,cAAc,GAAGI,MAAM,CAACJ,cAAc,IAAI,IAAI,CAACA,cAAc;EACtE;EAEA,IAAIO,EAAEA,CAAA,EAAG;IACL,OAAO;MACHN,OAAO,EAAE,IAAI,CAACA,OAAO,CAACO,QAAQ,CAAC,CAAC,CAACC,GAAG,CAACC,MAAM,IAAIjB,sBAAsB,CAACkB,MAAM,CAACD,MAAM,CAAC,CAAC;MACrFZ,YAAY,EAAE,IAAI,CAACD,aAAa,GAAG,IAAI,CAACC,YAAY,GAAG,IAAI,CAACE,cAAc;MAC1ED,cAAc,EAAE,IAAI,CAACA,cAAc;MACnCH,IAAI,EAAE,IAAI,CAACA,IAAI;MACfgB,KAAK,EAAE,CAAC,IAAI,CAACX,OAAO,CAACY,QAAQ,CAAC;IAClC,CAAC;EACL;EAEAC,gBAAgB,GAAIlB,IAAa,IAAK;IAClC,IAAI,CAACA,IAAI,GAAGA,IAAI;EACpB,CAAC;EAEDmB,gBAAgB,GAAIC,MAAe,IAAK;IACpC,IAAI,CAACnB,aAAa,GAAGmB,MAAM;EAC/B,CAAC;EAEDC,iBAAiB,GAAIC,KAAa,IAAK;IACnC,IAAI,CAACjB,OAAO,CAACkB,WAAW,CAACT,MAAM,IAAI;MAC/B,IAAIA,MAAM,CAACQ,KAAK,KAAKA,KAAK,EAAE;QACxBR,MAAM,CAACU,QAAQ,GAAG,IAAI;MAC1B;MAEA,OAAOV,MAAM;IACjB,CAAC,CAAC;EACN,CAAC;EAEDW,oBAAoB,GAAIH,KAAa,IAAK;IACtC,IAAI,CAACjB,OAAO,CAACkB,WAAW,CAACT,MAAM,IAAI;MAC/B,IAAIA,MAAM,CAACQ,KAAK,KAAKA,KAAK,EAAE;QACxBR,MAAM,CAACU,QAAQ,GAAG,KAAK;MAC3B;MAEA,OAAOV,MAAM;IACjB,CAAC,CAAC;EACN,CAAC;EAEDY,oBAAoB,GAAGA,CAAA,KAAM;IACzB,IAAI,CAACrB,OAAO,CAACkB,WAAW,CAACT,MAAM,IAAI;MAC/BA,MAAM,CAACU,QAAQ,GAAG,KAAK;MACvB,OAAOV,MAAM;IACjB,CAAC,CAAC;EACN,CAAC;EAEDa,SAAS,GAAIb,MAAqB,IAAK;IACnC,IAAI,CAACT,OAAO,CAACK,QAAQ,CAAC,CAACI,MAAM,CAAC,CAAC;EACnC,CAAC;AACL","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MultiAutoCompleteListOptionsPresenterWithUniqueValues","constructor","decoretee","init","params","options","filter","option","selected","vm","setListOpenState","open","setLoadedOptions","loaded","setSelectedOption","value","removeSelectedOption","resetSelectedOptions","addOption"],"sources":["MultiAutoCompleteListOptionsPresenterWithUniqueValues.ts"],"sourcesContent":["import type { CommandOption } from \"~/Command/domain/CommandOption.js\";\nimport type {\n IMultiAutoCompleteListOptionsPresenter,\n IMultiAutoCompleteListOptionsPresenterParams\n} from \"./MultiAutoCompleteListOptionsPresenter.js\";\n\nexport class MultiAutoCompleteListOptionsPresenterWithUniqueValues
|
|
1
|
+
{"version":3,"names":["MultiAutoCompleteListOptionsPresenterWithUniqueValues","constructor","decoretee","init","params","options","filter","option","selected","vm","setListOpenState","open","setLoadedOptions","loaded","setSelectedOption","value","removeSelectedOption","resetSelectedOptions","addOption"],"sources":["MultiAutoCompleteListOptionsPresenterWithUniqueValues.ts"],"sourcesContent":["import type { CommandOption } from \"~/Command/domain/CommandOption.js\";\nimport type {\n IMultiAutoCompleteListOptionsPresenter,\n IMultiAutoCompleteListOptionsPresenterParams\n} from \"./MultiAutoCompleteListOptionsPresenter.js\";\n\nexport class MultiAutoCompleteListOptionsPresenterWithUniqueValues implements IMultiAutoCompleteListOptionsPresenter {\n private decoretee: IMultiAutoCompleteListOptionsPresenter;\n\n constructor(decoretee: IMultiAutoCompleteListOptionsPresenter) {\n this.decoretee = decoretee;\n }\n\n init(params: IMultiAutoCompleteListOptionsPresenterParams) {\n const options = params.options?.filter(option => !option.selected);\n this.decoretee.init({\n ...params,\n options\n });\n }\n\n get vm() {\n return this.decoretee.vm;\n }\n\n setListOpenState = (open: boolean) => {\n this.decoretee.setListOpenState(open);\n };\n\n setLoadedOptions = (loaded: boolean) => {\n this.decoretee.setLoadedOptions(loaded);\n };\n\n setSelectedOption = (value: string) => {\n this.decoretee.setSelectedOption(value);\n };\n\n removeSelectedOption = (value: string) => {\n this.decoretee.removeSelectedOption(value);\n };\n\n resetSelectedOptions = () => {\n this.decoretee.resetSelectedOptions();\n };\n\n addOption = (option: CommandOption) => {\n this.decoretee.addOption(option);\n };\n}\n"],"mappings":"AAMA,OAAO,MAAMA,qDAAqD,CAAmD;EAGjHC,WAAWA,CAACC,SAAiD,EAAE;IAC3D,IAAI,CAACA,SAAS,GAAGA,SAAS;EAC9B;EAEAC,IAAIA,CAACC,MAAoD,EAAE;IACvD,MAAMC,OAAO,GAAGD,MAAM,CAACC,OAAO,EAAEC,MAAM,CAACC,MAAM,IAAI,CAACA,MAAM,CAACC,QAAQ,CAAC;IAClE,IAAI,CAACN,SAAS,CAACC,IAAI,CAAC;MAChB,GAAGC,MAAM;MACTC;IACJ,CAAC,CAAC;EACN;EAEA,IAAII,EAAEA,CAAA,EAAG;IACL,OAAO,IAAI,CAACP,SAAS,CAACO,EAAE;EAC5B;EAEAC,gBAAgB,GAAIC,IAAa,IAAK;IAClC,IAAI,CAACT,SAAS,CAACQ,gBAAgB,CAACC,IAAI,CAAC;EACzC,CAAC;EAEDC,gBAAgB,GAAIC,MAAe,IAAK;IACpC,IAAI,CAACX,SAAS,CAACU,gBAAgB,CAACC,MAAM,CAAC;EAC3C,CAAC;EAEDC,iBAAiB,GAAIC,KAAa,IAAK;IACnC,IAAI,CAACb,SAAS,CAACY,iBAAiB,CAACC,KAAK,CAAC;EAC3C,CAAC;EAEDC,oBAAoB,GAAID,KAAa,IAAK;IACtC,IAAI,CAACb,SAAS,CAACc,oBAAoB,CAACD,KAAK,CAAC;EAC9C,CAAC;EAEDE,oBAAoB,GAAGA,CAAA,KAAM;IACzB,IAAI,CAACf,SAAS,CAACe,oBAAoB,CAAC,CAAC;EACzC,CAAC;EAEDC,SAAS,GAAIX,MAAqB,IAAK;IACnC,IAAI,CAACL,SAAS,CAACgB,SAAS,CAACX,MAAM,CAAC;EACpC,CAAC;AACL","ignoreList":[]}
|