frappe-ui 0.1.278 → 1.0.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/frappe/DataImport/DataImportList.vue +4 -4
- package/frappe/DataImport/MappingStep.vue +4 -4
- package/frappe/DataImport/UploadStep.vue +14 -14
- package/frappe/DataImport/dataImport.ts +1 -1
- package/frappe/Link/Link.vue +1 -1
- package/frappe/Onboarding/onboarding.js +5 -1
- package/frappe/drive/js/icons.js +0 -37
- package/frappe/index.d.ts +10 -0
- package/icons/IconPicker.story.vue +6 -6
- package/package.json +45 -15
- package/readme.md +12 -0
- package/src/components/Alert/Alert.api.md +87 -0
- package/src/components/Alert/Alert.cy.ts +2 -2
- package/src/components/Alert/Alert.md +14 -0
- package/src/components/Alert/Alert.vue +15 -17
- package/src/components/Alert/stories/Controlled.vue +8 -6
- package/src/components/Alert/stories/Slots.vue +14 -13
- package/src/components/Alert/stories/Themes.vue +9 -7
- package/src/components/Alert/types.ts +1 -1
- package/src/components/Autocomplete/Autocomplete.api.md +6 -0
- package/src/components/Autocomplete/Autocomplete.cy.ts +26 -0
- package/src/components/Autocomplete/Autocomplete.vue +7 -1
- package/src/components/Autocomplete/deprecationKey.ts +5 -0
- package/src/components/Avatar/Avatar.api.md +54 -0
- package/src/components/Avatar/Avatar.md +11 -0
- package/src/components/Badge/Badge.api.md +60 -0
- package/src/components/Badge/Badge.md +13 -0
- package/src/components/Breadcrumbs/Breadcrumbs.api.md +34 -0
- package/src/components/Breadcrumbs/Breadcrumbs.md +13 -0
- package/src/components/Breadcrumbs/Breadcrumbs.vue +16 -8
- package/src/components/Breadcrumbs/stories/Slots.vue +4 -7
- package/src/components/Button/Button.api.md +128 -0
- package/src/components/Button/Button.cy.ts +79 -0
- package/src/components/Button/Button.md +21 -0
- package/src/components/Button/Button.vue +33 -26
- package/src/components/Calendar/Calendar.api.md +89 -0
- package/src/components/Calendar/Calendar.md +9 -0
- package/src/components/Calendar/Calendar.vue +3 -3
- package/src/components/Calendar/EventModalContent.vue +7 -9
- package/src/components/Calendar/stories/CustomHeader.vue +57 -55
- package/src/components/Calendar/stories/Examples.vue +9 -7
- package/src/components/Charts/Charts.md +5 -0
- package/src/components/Charts/stories/Examples.vue +36 -34
- package/src/components/Checkbox/Checkbox.api.md +95 -0
- package/src/components/Checkbox/Checkbox.cy.ts +65 -1
- package/src/components/Checkbox/Checkbox.md +23 -0
- package/src/components/Checkbox/Checkbox.vue +106 -31
- package/src/components/Checkbox/stories/Default.vue +10 -0
- package/src/components/Checkbox/stories/Labeling.vue +30 -0
- package/src/components/Checkbox/stories/Sizes.vue +10 -0
- package/src/components/Checkbox/stories/States.vue +12 -0
- package/src/components/Checkbox/types.ts +14 -9
- package/src/components/CircularProgressBar/CircularProgressBar.api.md +62 -0
- package/src/components/CircularProgressBar/CircularProgressBar.md +5 -0
- package/src/components/CircularProgressBar/CircularProgressBar.vue +1 -2
- package/src/components/Combobox/Combobox.api.md +272 -0
- package/src/components/Combobox/Combobox.cy.ts +173 -1
- package/src/components/Combobox/Combobox.md +55 -0
- package/src/components/Combobox/Combobox.vue +254 -213
- package/src/components/Combobox/ComboboxResults.vue +11 -41
- package/src/components/Combobox/stories/Clearable.vue +149 -0
- package/src/components/Combobox/stories/CreateNew.vue +92 -0
- package/src/components/Combobox/stories/Grouped.vue +5 -1
- package/src/components/Combobox/stories/InDialog.vue +92 -0
- package/src/components/Combobox/stories/Labeling.vue +38 -0
- package/src/components/Combobox/stories/MemberPicker.vue +15 -15
- package/src/components/Combobox/stories/Simple.vue +1 -1
- package/src/components/Combobox/types.ts +42 -13
- package/src/components/Combobox/utils.ts +17 -98
- package/src/components/CommandPalette/CommandPalette.api.md +54 -0
- package/src/components/CommandPalette/CommandPalette.vue +1 -1
- package/src/components/DatePicker/CalendarPanel.vue +453 -0
- package/src/components/DatePicker/DatePicker.api.md +786 -0
- package/src/components/DatePicker/DatePicker.cy.ts +212 -22
- package/src/components/DatePicker/DatePicker.md +14 -0
- package/src/components/DatePicker/DatePicker.vue +250 -361
- package/src/components/DatePicker/DateRangePicker.cy.ts +271 -16
- package/src/components/DatePicker/DateRangePicker.vue +442 -435
- package/src/components/DatePicker/DateTimePicker.cy.ts +193 -0
- package/src/components/DatePicker/DateTimePicker.vue +319 -416
- package/src/components/DatePicker/composables.ts +284 -0
- package/src/components/DatePicker/stories/DateTime.vue +110 -7
- package/src/components/DatePicker/stories/Examples.vue +145 -4
- package/src/components/DatePicker/stories/Range.vue +270 -4
- package/src/components/DatePicker/types.ts +255 -22
- package/src/components/DatePicker/useDatePicker.ts +14 -0
- package/src/components/DatePicker/utils.ts +35 -19
- package/src/components/Dialog/Dialog.api.md +182 -0
- package/src/components/Dialog/Dialog.cy.ts +364 -48
- package/src/components/Dialog/Dialog.md +70 -0
- package/src/components/Dialog/Dialog.vue +366 -175
- package/src/components/Dialog/index.ts +20 -2
- package/src/components/Dialog/stories/CommandPalette.vue +152 -0
- package/src/components/Dialog/stories/Imperative.vue +242 -0
- package/src/components/Dialog/stories/Prompt.vue +192 -0
- package/src/components/Dialog/stories/Share.vue +134 -0
- package/src/components/Dialog/stories/Wizard.vue +129 -0
- package/src/components/Dialog/types.ts +140 -29
- package/src/components/Dialogs.vue +26 -3
- package/src/components/Divider/Divider.api.md +39 -0
- package/src/components/Divider/Divider.cy.ts +2 -4
- package/src/components/Divider/Divider.md +13 -0
- package/src/components/Divider/Divider.vue +4 -8
- package/src/components/Divider/stories/Action.vue +23 -21
- package/src/components/Divider/stories/Examples.vue +18 -16
- package/src/components/Dropdown/Dropdown.api.md +122 -0
- package/src/components/Dropdown/Dropdown.cy.ts +11 -11
- package/src/components/Dropdown/Dropdown.md +41 -0
- package/src/components/Dropdown/DropdownMenuItemContent.vue +13 -6
- package/src/components/Dropdown/DropdownMenuList.vue +5 -4
- package/src/components/Dropdown/stories/01_Simple.vue +1 -1
- package/src/components/Dropdown/stories/02_Shortcuts.vue +2 -2
- package/src/components/Dropdown/stories/03_Submenus.vue +2 -2
- package/src/components/Dropdown/stories/05_KebabMenu.vue +2 -2
- package/src/components/Dropdown/stories/06_UserMenu.vue +2 -2
- package/src/components/Dropdown/types.ts +12 -2
- package/src/components/Dropdown/utils.ts +32 -12
- package/src/components/ErrorMessage/ErrorMessage.api.md +19 -0
- package/src/components/ErrorMessage/ErrorMessage.md +12 -0
- package/src/components/FileUploader/FileUploader.api.md +32 -0
- package/src/components/FileUploader/FileUploader.md +5 -0
- package/src/components/FormControl/FormControl.api.md +93 -0
- package/src/components/FormControl/FormControl.cy.ts +156 -0
- package/src/components/FormControl/FormControl.md +59 -0
- package/src/components/FormControl/FormControl.story.vue +22 -5
- package/src/components/FormControl/FormControl.vue +104 -83
- package/src/components/FormControl/stories/RealForm.vue +202 -0
- package/src/components/FormControl/types.ts +25 -2
- package/src/components/FormLabel.vue +2 -4
- package/src/components/Input.cy.ts +19 -0
- package/src/components/Input.vue +4 -0
- package/src/components/InputLabeling/InputDescription.vue +16 -0
- package/src/components/InputLabeling/InputError.vue +15 -0
- package/src/components/InputLabeling/InputLabel.vue +25 -0
- package/src/components/InputLabeling/LabelingWrapper.vue +18 -0
- package/src/components/InputLabeling/RequiredIndicator.vue +9 -0
- package/src/components/InputLabeling/index.ts +5 -0
- package/src/components/ItemListRow/ItemListRow.api.md +73 -0
- package/src/components/ItemListRow/ItemListRow.md +14 -0
- package/src/components/{ItemList → ItemListRow}/index.ts +0 -1
- package/src/components/{ItemList → ItemListRow}/stories/RowStates.vue +4 -7
- package/src/components/ItemListRow/types.ts +20 -0
- package/src/components/KeyboardShortcut.vue +111 -83
- package/src/components/KeyboardShortcutsModal/KeyboardShortcutsModal.api.md +42 -0
- package/src/components/KeyboardShortcutsModal/KeyboardShortcutsModal.md +173 -0
- package/src/components/KeyboardShortcutsModal/KeyboardShortcutsModal.spec.ts +146 -0
- package/src/components/KeyboardShortcutsModal/KeyboardShortcutsModal.vue +172 -0
- package/src/components/KeyboardShortcutsModal/index.ts +1 -0
- package/src/components/ListFilter/ListFilter.api.md +37 -0
- package/src/components/ListFilter/ListFilter.vue +3 -3
- package/src/components/ListView/ListHeader.vue +1 -1
- package/src/components/ListView/ListHeaderItem.vue +7 -7
- package/src/components/ListView/ListSelectBanner.vue +1 -1
- package/src/components/ListView/ListView.api.md +65 -0
- package/src/components/ListView/ListView.md +22 -0
- package/src/components/ListView/ListView.vue +9 -5
- package/src/components/ListView/stories/CustomList.vue +5 -13
- package/src/components/MonthPicker/MonthPicker.api.md +43 -0
- package/src/components/MonthPicker/MonthPicker.md +7 -0
- package/src/components/MonthPicker/MonthPicker.vue +3 -6
- package/src/components/MonthPicker/stories/Example.vue +25 -4
- package/src/components/MultiSelect/MultiSelect.api.md +243 -0
- package/src/components/MultiSelect/MultiSelect.cy.ts +167 -1
- package/src/components/MultiSelect/MultiSelect.md +50 -0
- package/src/components/MultiSelect/MultiSelect.vue +235 -209
- package/src/components/MultiSelect/MultiSelectResults.vue +33 -56
- package/src/components/MultiSelect/index.ts +4 -0
- package/src/components/MultiSelect/stories/AsyncOptions.vue +114 -0
- package/src/components/MultiSelect/stories/Footer.vue +2 -4
- package/src/components/MultiSelect/stories/Labeling.vue +40 -0
- package/src/components/MultiSelect/stories/Members.vue +114 -0
- package/src/components/MultiSelect/stories/TagsTrigger.vue +3 -5
- package/src/components/MultiSelect/stories/TriggerSlot.vue +3 -8
- package/src/components/MultiSelect/types.ts +53 -5
- package/src/components/MultiSelect/utils.ts +17 -95
- package/src/components/Password/Password.api.md +112 -0
- package/src/components/Password/Password.cy.ts +43 -2
- package/src/components/Password/Password.md +34 -0
- package/src/components/Password/Password.vue +56 -23
- package/src/components/Password/stories/Labeling.vue +30 -0
- package/src/components/Password/stories/LegacyValue.vue +16 -0
- package/src/components/Password/stories/Sizes.vue +12 -0
- package/src/components/Password/stories/States.vue +16 -0
- package/src/components/Password/stories/Variants.vue +11 -0
- package/src/components/Password/types.ts +19 -4
- package/src/components/Popover/Popover.api.md +128 -0
- package/src/components/Popover/Popover.md +11 -0
- package/src/components/Progress/Progress.api.md +64 -0
- package/src/components/Progress/Progress.md +17 -0
- package/src/components/Progress/stories/Sizes.vue +6 -4
- package/src/components/Provider/FrappeUIProvider.vue +4 -3
- package/src/components/Rating/Rating.api.md +121 -0
- package/src/components/Rating/Rating.cy.ts +269 -24
- package/src/components/Rating/Rating.md +130 -0
- package/src/components/Rating/Rating.vue +402 -49
- package/src/components/Rating/index.ts +1 -1
- package/src/components/Rating/stories/Clearable.vue +29 -0
- package/src/components/Rating/stories/CustomColor.vue +47 -0
- package/src/components/Rating/stories/CustomIcon.vue +18 -0
- package/src/components/Rating/stories/CustomSlot.vue +39 -0
- package/src/components/Rating/stories/Default.vue +10 -0
- package/src/components/Rating/stories/HalfStep.vue +10 -0
- package/src/components/Rating/stories/HalfStepCustomColor.vue +27 -0
- package/src/components/Rating/stories/Labeling.vue +30 -0
- package/src/components/Rating/stories/LegacyRatingFrom.vue +13 -0
- package/src/components/Rating/stories/Max.vue +10 -0
- package/src/components/Rating/stories/Sizes.vue +12 -0
- package/src/components/Rating/stories/States.vue +16 -0
- package/src/components/Rating/types.ts +64 -9
- package/src/components/Select/Select.api.md +173 -0
- package/src/components/Select/Select.cy.ts +137 -0
- package/src/components/Select/Select.md +34 -0
- package/src/components/Select/Select.vue +192 -231
- package/src/components/Select/stories/Labeling.vue +39 -0
- package/src/components/Select/stories/OptionSlot.vue +6 -6
- package/src/components/Select/stories/TriggerSlots.vue +1 -1
- package/src/components/Select/types.ts +34 -9
- package/src/components/Select/utils.ts +65 -0
- package/src/components/Sidebar/Sidebar.api.md +215 -0
- package/src/components/Sidebar/Sidebar.cy.ts +16 -4
- package/src/components/Sidebar/Sidebar.md +8 -0
- package/src/components/Sidebar/Sidebar.vue +9 -11
- package/src/components/Sidebar/SidebarHeader.vue +7 -5
- package/src/components/Sidebar/SidebarItem.vue +35 -9
- package/src/components/Sidebar/SidebarSection.vue +10 -9
- package/src/components/Sidebar/stories/Example.vue +21 -33
- package/src/components/Sidebar/types.ts +5 -0
- package/src/components/Slider/Slider.api.md +114 -0
- package/src/components/Slider/Slider.cy.ts +60 -3
- package/src/components/Slider/Slider.md +32 -0
- package/src/components/Slider/Slider.vue +123 -20
- package/src/components/Slider/stories/Default.vue +12 -0
- package/src/components/Slider/stories/Labeling.vue +31 -0
- package/src/components/Slider/stories/Range.vue +5 -3
- package/src/components/Slider/stories/Sizes.vue +14 -0
- package/src/components/Slider/stories/States.vue +18 -0
- package/src/components/Slider/stories/ValueCommit.vue +29 -0
- package/src/components/Slider/types.ts +18 -29
- package/src/components/Spinner.vue +1 -5
- package/src/components/Switch/Switch.api.md +103 -0
- package/src/components/Switch/Switch.cy.ts +67 -2
- package/src/components/Switch/Switch.md +34 -0
- package/src/components/Switch/Switch.vue +112 -48
- package/src/components/Switch/stories/Default.vue +10 -0
- package/src/components/Switch/stories/Icons.vue +14 -0
- package/src/components/Switch/stories/Labeling.vue +31 -0
- package/src/components/Switch/stories/LegacyChange.vue +17 -0
- package/src/components/Switch/stories/Sizes.vue +10 -0
- package/src/components/Switch/stories/States.vue +12 -0
- package/src/components/Switch/types.ts +17 -11
- package/src/components/TabButtons/TabButtons.api.md +35 -0
- package/src/components/TabButtons/TabButtons.story.vue +1 -1
- package/src/components/TabButtons/TabButtons.vue +10 -1
- package/src/components/Tabs/Tabs.api.md +68 -0
- package/src/components/Tabs/Tabs.md +11 -0
- package/src/components/Tabs/Tabs.vue +13 -5
- package/src/components/Tabs/stories/Icons.vue +9 -12
- package/src/components/Tabs/stories/Orientation.vue +17 -15
- package/src/components/Tabs/types.ts +7 -2
- package/src/components/TextEditor/TextEditor.api.md +161 -0
- package/src/components/TextEditor/TextEditor.md +11 -0
- package/src/components/TextEditor/commands.js +1 -1
- package/src/components/TextEditor/extensions/toc-node/TocNodeView.vue +1 -1
- package/src/components/TextInput/TextInput.api.md +123 -0
- package/src/components/TextInput/TextInput.cy.ts +107 -0
- package/src/components/TextInput/TextInput.md +42 -0
- package/src/components/TextInput/TextInput.vue +107 -35
- package/src/components/TextInput/stories/Default.vue +10 -0
- package/src/components/TextInput/stories/Labeling.vue +30 -0
- package/src/components/TextInput/stories/PrefixSuffix.vue +28 -0
- package/src/components/TextInput/stories/Sizes.vue +12 -0
- package/src/components/TextInput/stories/Slots.vue +15 -0
- package/src/components/TextInput/stories/States.vue +16 -0
- package/src/components/TextInput/stories/Types.vue +17 -0
- package/src/components/TextInput/stories/Variants.vue +11 -0
- package/src/components/TextInput/types.ts +5 -9
- package/src/components/Textarea/Textarea.api.md +113 -0
- package/src/components/Textarea/Textarea.cy.ts +62 -0
- package/src/components/Textarea/Textarea.md +27 -0
- package/src/components/Textarea/Textarea.vue +92 -22
- package/src/components/Textarea/stories/Default.vue +10 -0
- package/src/components/Textarea/stories/Labeling.vue +30 -0
- package/src/components/Textarea/stories/Sizes.vue +12 -0
- package/src/components/Textarea/stories/States.vue +16 -0
- package/src/components/Textarea/stories/Variants.vue +5 -2
- package/src/components/Textarea/types.ts +6 -9
- package/src/components/TimePicker/TimePicker.api.md +239 -0
- package/src/components/TimePicker/TimePicker.cy.ts +76 -18
- package/src/components/TimePicker/TimePicker.md +18 -0
- package/src/components/TimePicker/TimePicker.vue +485 -462
- package/src/components/TimePicker/stories/Basic.vue +18 -7
- package/src/components/TimePicker/stories/CustomOptions.vue +17 -16
- package/src/components/TimePicker/stories/Range.vue +38 -8
- package/src/components/TimePicker/stories/TwentyFour.vue +15 -3
- package/src/components/TimePicker/types.ts +87 -47
- package/src/components/TimePicker/utils.ts +175 -0
- package/src/components/Toast/Toast.api.md +70 -0
- package/src/components/Toast/Toast.cy.ts +73 -46
- package/src/components/Toast/Toast.md +31 -0
- package/src/components/Toast/Toast.test.ts +107 -0
- package/src/components/Toast/Toast.vue +15 -9
- package/src/components/Toast/ToastProvider.vue +45 -9
- package/src/components/Toast/stories/Actions.vue +24 -50
- package/src/components/Toast/stories/Async.vue +52 -0
- package/src/components/Toast/stories/CustomIcon.vue +29 -0
- package/src/components/Toast/stories/Examples.vue +38 -40
- package/src/components/Toast/stories/Quickstart.vue +7 -0
- package/src/components/Toast/toast.ts +198 -0
- package/src/components/Tooltip/Tooltip.api.md +117 -0
- package/src/components/Tooltip/Tooltip.md +12 -0
- package/src/components/Tooltip/index.ts +2 -1
- package/src/components/Tree/Tree.api.md +52 -0
- package/src/components/Tree/Tree.md +8 -0
- package/src/components/Tree/Tree.vue +6 -7
- package/src/components/shared/picker/PickerShell.vue +264 -0
- package/src/components/shared/selection/OptionIcon.vue +44 -0
- package/src/components/shared/selection/createItemSlotRender.ts +26 -0
- package/src/components/shared/selection/popoverMotion.css +95 -0
- package/src/components/shared/selection/useEmptyValueMapping.ts +34 -0
- package/src/components/shared/selection/useFilteredGroups.ts +46 -0
- package/src/components/shared/selection/utils.ts +138 -0
- package/src/composables/inputTypes.ts +8 -0
- package/src/composables/useAutofocusOnOpen.ts +82 -0
- package/src/composables/useInputLabeling.ts +131 -0
- package/src/composables/useShortcut.spec.ts +466 -0
- package/src/composables/useShortcut.ts +392 -0
- package/src/index.ts +47 -32
- package/src/utils/confirmDialog.js +5 -0
- package/src/utils/dialog.cy.ts +527 -0
- package/src/utils/dialog.ts +664 -0
- package/src/utils/iconString.ts +26 -0
- package/src/utils/useId.ts +7 -5
- package/src/utils/warnDeprecated.ts +20 -0
- package/tailwind/colorPalette.js +2 -1
- package/tailwind/iconPackPlugin.js +108 -0
- package/tailwind/lucideIconsPlugin.js +11 -89
- package/tailwind/plugin.js +9 -152
- package/tailwind/tokens.js +45 -0
- package/vite/doctypeInterfaceGenerator.js +1 -1
- package/vite/index.js +1 -0
- package/vite/lucideIcons.js +52 -6
- package/src/components/Checkbox/stories/Examples.vue +0 -8
- package/src/components/Dialog/stories/Confirm.vue +0 -38
- package/src/components/Dialog/stories/Custom.vue +0 -38
- package/src/components/Dialog/stories/Interactive.vue +0 -48
- package/src/components/Dialog/stories/Modal.vue +0 -21
- package/src/components/ItemList/ItemList.cy.ts +0 -110
- package/src/components/ItemList/ItemList.vue +0 -166
- package/src/components/ItemList/stories/AdvancedSlots.vue +0 -73
- package/src/components/ItemList/stories/Basic.vue +0 -92
- package/src/components/ItemList/stories/CustomSlots.vue +0 -91
- package/src/components/ItemList/stories/EmptyAndFooter.vue +0 -79
- package/src/components/ItemList/types.ts +0 -121
- package/src/components/Rating/stories/Examples.vue +0 -7
- package/src/components/Slider/stories/Example.vue +0 -11
- package/src/components/Switch/stories/Example.vue +0 -7
- package/src/components/Switch/stories/Labels.vue +0 -17
- package/src/components/TextInput/stories/List.vue +0 -71
- package/src/components/Toast/index.ts +0 -200
- /package/src/components/{ItemList → ItemListRow}/ItemListRow.cy.ts +0 -0
- /package/src/components/{ItemList → ItemListRow}/ItemListRow.vue +0 -0
- /package/src/components/Password/stories/{Example.vue → Default.vue} +0 -0
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
Status
|
|
42
42
|
</div>
|
|
43
43
|
</div>
|
|
44
|
-
<div
|
|
45
|
-
v-for="dataImport in dataImports.data"
|
|
44
|
+
<div
|
|
45
|
+
v-for="dataImport in dataImports.data"
|
|
46
46
|
@click="() => redirectToImport(dataImport.name!)"
|
|
47
47
|
class="grid grid-cols-[75%,20%] lg:grid-cols-[85%,20%] items-center cursor-pointer py-2.5 px-1 mx-2"
|
|
48
48
|
>
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
>
|
|
85
85
|
<template #body-content>
|
|
86
86
|
<div>
|
|
87
|
-
<Link
|
|
87
|
+
<Link
|
|
88
88
|
v-model="doctypeForImport"
|
|
89
89
|
doctype="DocType"
|
|
90
90
|
:filters="{
|
|
@@ -105,7 +105,7 @@ import { dayjs } from "../../src/utils/dayjs"
|
|
|
105
105
|
import { getBadgeColor } from "./dataImport"
|
|
106
106
|
import Badge from '../../src/components/Badge/Badge.vue'
|
|
107
107
|
import type { BadgeProps } from '../../src/components/Badge/types'
|
|
108
|
-
import { toast } from "../../src/components/Toast/
|
|
108
|
+
import { toast } from "../../src/components/Toast/toast"
|
|
109
109
|
import Button from '../../src/components/Button/Button.vue'
|
|
110
110
|
import Dialog from '../../src/components/Dialog/Dialog.vue'
|
|
111
111
|
import FeatherIcon from '../../src/components/FeatherIcon.vue'
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
Change the mapping of columns from your file to fields in the system
|
|
15
15
|
</div>
|
|
16
16
|
</div>
|
|
17
|
-
|
|
17
|
+
|
|
18
18
|
<div class="flex flex-col lg:flex-row space-y-2 lg:space-x-2 lg:space-y-0">
|
|
19
19
|
<Button v-if="mappingUpdated" label="Reset Mapping" @click="resetMapping" />
|
|
20
20
|
<Button label="Continue" variant="solid" @click="$emit('updateStep', 'preview')" />
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
<Autocomplete
|
|
37
37
|
:model-value="columnMappings[columnsFromFile[i - 1]]"
|
|
38
38
|
:options="columnsFromSystem"
|
|
39
|
-
placeholder="Select field"
|
|
39
|
+
placeholder="Select field"
|
|
40
40
|
@update:model-value="(val: any) => updateColumnMappings(i, val)"
|
|
41
41
|
/>
|
|
42
42
|
</template>
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
import type { DataImport, DataImports } from './types';
|
|
49
49
|
import { fieldsToIgnore, getBadgeColor, getPreviewData } from './dataImport'
|
|
50
50
|
import { computed, nextTick, onMounted, ref } from 'vue';
|
|
51
|
-
import { toast } from "../../src/components/Toast/
|
|
51
|
+
import { toast } from "../../src/components/Toast/toast"
|
|
52
52
|
import Autocomplete from '../../src/components/Autocomplete/Autocomplete.vue';
|
|
53
53
|
import Badge from '../../src/components/Badge/Badge.vue';
|
|
54
54
|
import Button from '../../src/components/Button/Button.vue';
|
|
@@ -180,7 +180,7 @@ const resetMapping = () => {
|
|
|
180
180
|
|
|
181
181
|
const getChildTableName = (parent: string, child: string) => {
|
|
182
182
|
let parentFields = props.fields.data?.docs.find((doc: any) => doc.name == parent)?.fields || [];
|
|
183
|
-
|
|
183
|
+
|
|
184
184
|
let childField = parentFields.filter((field: any) => field.options == child)[0]
|
|
185
185
|
return childField?.label || child;
|
|
186
186
|
}
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
{{ data?.status }}
|
|
11
11
|
</Badge>
|
|
12
12
|
</div>
|
|
13
|
-
<Button
|
|
14
|
-
variant="solid"
|
|
13
|
+
<Button
|
|
14
|
+
variant="solid"
|
|
15
15
|
@click="saveImport"
|
|
16
16
|
:disabled="disableContinueButton"
|
|
17
17
|
>
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
<div
|
|
28
28
|
v-if="showFileSelector && !importFile"
|
|
29
29
|
@dragover.prevent
|
|
30
|
-
@drop.prevent="(e) => uploadFile(e)"
|
|
30
|
+
@drop.prevent="(e) => uploadFile(e)"
|
|
31
31
|
class="h-[300px] flex items-center justify-center bg-surface-gray-1 border border-dashed border-outline-gray-3 rounded-md">
|
|
32
32
|
<div v-if="showFileSelector && !uploading" class="w-4/5 lg:w-2/5 text-center">
|
|
33
33
|
<FeatherIcon name="upload-cloud" class="size-6 stroke-1.5 text-ink-gray-6 mx-auto mb-2.5" />
|
|
@@ -39,11 +39,11 @@
|
|
|
39
39
|
@change="(e) => uploadFile(e)"
|
|
40
40
|
/>
|
|
41
41
|
<div class="leading-5 text-ink-gray-9">
|
|
42
|
-
Drag and drop a CSV file, or upload from your
|
|
43
|
-
<span @click="openFileSelector" class="cursor-pointer font-semibold hover:underline">Device</span>
|
|
44
|
-
or
|
|
45
|
-
<span @click="openSheetSelector" class="cursor-pointer font-semibold hover:underline">
|
|
46
|
-
Google Sheet
|
|
42
|
+
Drag and drop a CSV file, or upload from your
|
|
43
|
+
<span @click="openFileSelector" class="cursor-pointer font-semibold hover:underline">Device</span>
|
|
44
|
+
or
|
|
45
|
+
<span @click="openSheetSelector" class="cursor-pointer font-semibold hover:underline">
|
|
46
|
+
Google Sheet
|
|
47
47
|
</span>
|
|
48
48
|
</div>
|
|
49
49
|
</div>
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
</div>
|
|
58
58
|
</div>
|
|
59
59
|
<div class="w-full bg-surface-gray-1 h-1 rounded-full mt-3">
|
|
60
|
-
<div
|
|
60
|
+
<div
|
|
61
61
|
class="bg-surface-gray-7 h-1 rounded-full transition-all duration-500 ease-in-out"
|
|
62
62
|
:style="`width: ${uploadProgress}%`"
|
|
63
63
|
></div>
|
|
@@ -74,8 +74,8 @@
|
|
|
74
74
|
{{ convertToKB(importFile.file_size) }}
|
|
75
75
|
</div>
|
|
76
76
|
</div>
|
|
77
|
-
<FeatherIcon
|
|
78
|
-
name="trash-2"
|
|
77
|
+
<FeatherIcon
|
|
78
|
+
name="trash-2"
|
|
79
79
|
class="size-4 stroke-1.5 text-ink-red-3 cursor-pointer"
|
|
80
80
|
@click="deleteFile"
|
|
81
81
|
/>
|
|
@@ -154,7 +154,7 @@
|
|
|
154
154
|
import { computed, nextTick, ref, watch } from 'vue'
|
|
155
155
|
import { useRouter } from 'vue-router'
|
|
156
156
|
import type { DataImports, DataImport, DocField, DocType } from './types'
|
|
157
|
-
import { toast } from "../../src/components/Toast/
|
|
157
|
+
import { toast } from "../../src/components/Toast/toast"
|
|
158
158
|
import { fieldsToIgnore, getChildTableName, getBadgeColor } from './dataImport'
|
|
159
159
|
import Badge from '../../src/components/Badge/Badge.vue'
|
|
160
160
|
import Button from '../../src/components/Button/Button.vue'
|
|
@@ -199,7 +199,7 @@ const extractFile = (e: Event): File | null => {
|
|
|
199
199
|
const uploadFile = (e: Event) => {
|
|
200
200
|
const file = extractFile(e)
|
|
201
201
|
if (!file) return;
|
|
202
|
-
|
|
202
|
+
|
|
203
203
|
if (file.type !== 'text/csv') {
|
|
204
204
|
toast.error('Please upload a valid CSV file.')
|
|
205
205
|
console.error('Please upload a valid CSV file.')
|
|
@@ -309,7 +309,7 @@ const exportTemplate = async (type: 'mandatory' | 'all') => {
|
|
|
309
309
|
const getExportURL = (type: 'mandatory' | 'all') => {
|
|
310
310
|
if (!props.doctype && !props.data?.reference_doctype) return ''
|
|
311
311
|
let exportFields = getExportFields(type)
|
|
312
|
-
|
|
312
|
+
|
|
313
313
|
return `/api/method/frappe.core.doctype.data_import.data_import.download_template
|
|
314
314
|
?doctype=${encodeURIComponent(props.doctype || props.data?.reference_doctype as string)}
|
|
315
315
|
&export_fields=${encodeURIComponent(JSON.stringify(exportFields))}
|
package/frappe/Link/Link.vue
CHANGED
|
@@ -71,7 +71,7 @@ const createNewOption = {
|
|
|
71
71
|
label: 'Create New',
|
|
72
72
|
slotName: 'create-new',
|
|
73
73
|
condition: () => true,
|
|
74
|
-
onClick: ({
|
|
74
|
+
onClick: ({ query }) => emit('create', query),
|
|
75
75
|
} as ComboboxOption
|
|
76
76
|
|
|
77
77
|
const linkOptions = computed(() => {
|
|
@@ -131,7 +131,11 @@ export function useOnboarding(appName) {
|
|
|
131
131
|
if (onboardingSteps.value.length) {
|
|
132
132
|
let _steps = onboardingSteps.value
|
|
133
133
|
_steps.forEach((step, index) => {
|
|
134
|
-
|
|
134
|
+
const onboardingExists =
|
|
135
|
+
onboardings[appName] && onboardings[appName][index]
|
|
136
|
+
if (onboardingExists) {
|
|
137
|
+
onboardings[appName][index].completed = step.completed
|
|
138
|
+
}
|
|
135
139
|
})
|
|
136
140
|
isOnboardingStepsCompleted.value = _steps.every((step) => step.completed)
|
|
137
141
|
} else {
|
package/frappe/drive/js/icons.js
CHANGED
|
@@ -3,7 +3,6 @@ import PlusSquare from "~icons/lucide/plus-square"
|
|
|
3
3
|
import Sunset from "~icons/lucide/sunset"
|
|
4
4
|
import Battery from "~icons/lucide/battery"
|
|
5
5
|
import LogIn from "~icons/lucide/log-in"
|
|
6
|
-
import Gitlab from "~icons/lucide/gitlab"
|
|
7
6
|
import Map from "~icons/lucide/map"
|
|
8
7
|
import CornerUpRight from "~icons/lucide/corner-up-right"
|
|
9
8
|
import ZapOff from "~icons/lucide/zap-off"
|
|
@@ -16,7 +15,6 @@ import TrendingUp from "~icons/lucide/trending-up"
|
|
|
16
15
|
import EyeOff from "~icons/lucide/eye-off"
|
|
17
16
|
import Octagon from "~icons/lucide/octagon"
|
|
18
17
|
import Edit from "~icons/lucide/edit"
|
|
19
|
-
import Pocket from "~icons/lucide/pocket"
|
|
20
18
|
import RefreshCcw from "~icons/lucide/refresh-ccw"
|
|
21
19
|
import Truck from "~icons/lucide/truck"
|
|
22
20
|
import Volume2 from "~icons/lucide/volume-2"
|
|
@@ -57,7 +55,6 @@ import Link from "~icons/lucide/link"
|
|
|
57
55
|
import Pause from "~icons/lucide/pause"
|
|
58
56
|
import PhoneOutgoing from "~icons/lucide/phone-outgoing"
|
|
59
57
|
import Save from "~icons/lucide/save"
|
|
60
|
-
import Facebook from "~icons/lucide/facebook"
|
|
61
58
|
import UserX from "~icons/lucide/user-x"
|
|
62
59
|
import PenTool from "~icons/lucide/pen-tool"
|
|
63
60
|
import Trash2 from "~icons/lucide/trash-2"
|
|
@@ -87,7 +84,6 @@ import MicOff from "~icons/lucide/mic-off"
|
|
|
87
84
|
import ExternalLink from "~icons/lucide/external-link"
|
|
88
85
|
import Menu from "~icons/lucide/menu"
|
|
89
86
|
import PauseCircle from "~icons/lucide/pause-circle"
|
|
90
|
-
import Instagram from "~icons/lucide/instagram"
|
|
91
87
|
import ToggleLeft from "~icons/lucide/toggle-left"
|
|
92
88
|
import Speaker from "~icons/lucide/speaker"
|
|
93
89
|
import Image from "~icons/lucide/image"
|
|
@@ -122,7 +118,6 @@ import UserMinus from "~icons/lucide/user-minus"
|
|
|
122
118
|
import Database from "~icons/lucide/database"
|
|
123
119
|
import Search from "~icons/lucide/search"
|
|
124
120
|
import Globe from "~icons/lucide/globe"
|
|
125
|
-
import Github from "~icons/lucide/github"
|
|
126
121
|
import Bell from "~icons/lucide/bell"
|
|
127
122
|
import Monitor from "~icons/lucide/monitor"
|
|
128
123
|
import Scissors from "~icons/lucide/scissors"
|
|
@@ -148,7 +143,6 @@ import Navigation from "~icons/lucide/navigation"
|
|
|
148
143
|
import LogOut from "~icons/lucide/log-out"
|
|
149
144
|
import Underline from "~icons/lucide/underline"
|
|
150
145
|
import Triangle from "~icons/lucide/triangle"
|
|
151
|
-
import Slack from "~icons/lucide/slack"
|
|
152
146
|
import Watch from "~icons/lucide/watch"
|
|
153
147
|
import Disc from "~icons/lucide/disc"
|
|
154
148
|
import StopCircle from "~icons/lucide/stop-circle"
|
|
@@ -164,7 +158,6 @@ import File from "~icons/lucide/file"
|
|
|
164
158
|
import ThumbsDown from "~icons/lucide/thumbs-down"
|
|
165
159
|
import Download from "~icons/lucide/download"
|
|
166
160
|
import Umbrella from "~icons/lucide/umbrella"
|
|
167
|
-
import Framer from "~icons/lucide/framer"
|
|
168
161
|
import Sun from "~icons/lucide/sun"
|
|
169
162
|
import PhoneCall from "~icons/lucide/phone-call"
|
|
170
163
|
import AlertCircle from "~icons/lucide/alert-circle"
|
|
@@ -172,7 +165,6 @@ import CheckCircle from "~icons/lucide/check-circle"
|
|
|
172
165
|
import Target from "~icons/lucide/target"
|
|
173
166
|
import LifeBuoy from "~icons/lucide/life-buoy"
|
|
174
167
|
import Shield from "~icons/lucide/shield"
|
|
175
|
-
import Youtube from "~icons/lucide/youtube"
|
|
176
168
|
import Cpu from "~icons/lucide/cpu"
|
|
177
169
|
import Users from "~icons/lucide/users"
|
|
178
170
|
import Mail from "~icons/lucide/mail"
|
|
@@ -181,9 +173,7 @@ import PhoneIncoming from "~icons/lucide/phone-incoming"
|
|
|
181
173
|
import CreditCard from "~icons/lucide/credit-card"
|
|
182
174
|
import Lock from "~icons/lucide/lock"
|
|
183
175
|
import Maximize from "~icons/lucide/maximize"
|
|
184
|
-
import Twitter from "~icons/lucide/twitter"
|
|
185
176
|
import Inbox from "~icons/lucide/inbox"
|
|
186
|
-
import Linkedin from "~icons/lucide/linkedin"
|
|
187
177
|
import ShoppingCart from "~icons/lucide/shopping-cart"
|
|
188
178
|
import Play from "~icons/lucide/play"
|
|
189
179
|
import Code from "~icons/lucide/code"
|
|
@@ -191,7 +181,6 @@ import RotateCcw from "~icons/lucide/rotate-ccw"
|
|
|
191
181
|
import MoreHorizontal from "~icons/lucide/more-horizontal"
|
|
192
182
|
import Percent from "~icons/lucide/percent"
|
|
193
183
|
import HelpCircle from "~icons/lucide/help-circle"
|
|
194
|
-
import Trello from "~icons/lucide/trello"
|
|
195
184
|
import Shuffle from "~icons/lucide/shuffle"
|
|
196
185
|
import Sliders from "~icons/lucide/sliders"
|
|
197
186
|
import Volume from "~icons/lucide/volume"
|
|
@@ -203,7 +192,6 @@ const icons = {
|
|
|
203
192
|
sunset: Sunset,
|
|
204
193
|
battery: Battery,
|
|
205
194
|
"log-in": LogIn,
|
|
206
|
-
gitlab: Gitlab,
|
|
207
195
|
map: Map,
|
|
208
196
|
"corner-up-right": CornerUpRight,
|
|
209
197
|
"zap-off": ZapOff,
|
|
@@ -215,7 +203,6 @@ const icons = {
|
|
|
215
203
|
"eye-off": EyeOff,
|
|
216
204
|
octagon: Octagon,
|
|
217
205
|
edit: Edit,
|
|
218
|
-
pocket: Pocket,
|
|
219
206
|
"refresh-ccw": RefreshCcw,
|
|
220
207
|
truck: Truck,
|
|
221
208
|
"volume-2": Volume2,
|
|
@@ -256,7 +243,6 @@ const icons = {
|
|
|
256
243
|
pause: Pause,
|
|
257
244
|
"phone-outgoing": PhoneOutgoing,
|
|
258
245
|
save: Save,
|
|
259
|
-
facebook: Facebook,
|
|
260
246
|
"user-x": UserX,
|
|
261
247
|
"pen-tool": PenTool,
|
|
262
248
|
"trash-2": Trash2,
|
|
@@ -286,7 +272,6 @@ const icons = {
|
|
|
286
272
|
"external-link": ExternalLink,
|
|
287
273
|
menu: Menu,
|
|
288
274
|
"pause-circle": PauseCircle,
|
|
289
|
-
instagram: Instagram,
|
|
290
275
|
"toggle-left": ToggleLeft,
|
|
291
276
|
speaker: Speaker,
|
|
292
277
|
image: Image,
|
|
@@ -321,7 +306,6 @@ const icons = {
|
|
|
321
306
|
database: Database,
|
|
322
307
|
search: Search,
|
|
323
308
|
globe: Globe,
|
|
324
|
-
github: Github,
|
|
325
309
|
bell: Bell,
|
|
326
310
|
monitor: Monitor,
|
|
327
311
|
scissors: Scissors,
|
|
@@ -347,7 +331,6 @@ const icons = {
|
|
|
347
331
|
"log-out": LogOut,
|
|
348
332
|
underline: Underline,
|
|
349
333
|
triangle: Triangle,
|
|
350
|
-
slack: Slack,
|
|
351
334
|
watch: Watch,
|
|
352
335
|
disc: Disc,
|
|
353
336
|
"stop-circle": StopCircle,
|
|
@@ -363,7 +346,6 @@ const icons = {
|
|
|
363
346
|
"thumbs-down": ThumbsDown,
|
|
364
347
|
download: Download,
|
|
365
348
|
umbrella: Umbrella,
|
|
366
|
-
framer: Framer,
|
|
367
349
|
sun: Sun,
|
|
368
350
|
"phone-call": PhoneCall,
|
|
369
351
|
"alert-circle": AlertCircle,
|
|
@@ -371,7 +353,6 @@ const icons = {
|
|
|
371
353
|
target: Target,
|
|
372
354
|
"life-buoy": LifeBuoy,
|
|
373
355
|
shield: Shield,
|
|
374
|
-
youtube: Youtube,
|
|
375
356
|
cpu: Cpu,
|
|
376
357
|
users: Users,
|
|
377
358
|
mail: Mail,
|
|
@@ -380,9 +361,7 @@ const icons = {
|
|
|
380
361
|
"credit-card": CreditCard,
|
|
381
362
|
lock: Lock,
|
|
382
363
|
maximize: Maximize,
|
|
383
|
-
twitter: Twitter,
|
|
384
364
|
inbox: Inbox,
|
|
385
|
-
linkedin: Linkedin,
|
|
386
365
|
"shopping-cart": ShoppingCart,
|
|
387
366
|
play: Play,
|
|
388
367
|
code: Code,
|
|
@@ -390,7 +369,6 @@ const icons = {
|
|
|
390
369
|
"more-horizontal": MoreHorizontal,
|
|
391
370
|
percent: Percent,
|
|
392
371
|
"help-circle": HelpCircle,
|
|
393
|
-
trello: Trello,
|
|
394
372
|
shuffle: Shuffle,
|
|
395
373
|
sliders: Sliders,
|
|
396
374
|
volume: Volume,
|
|
@@ -399,7 +377,6 @@ const icons = {
|
|
|
399
377
|
sunset: Sunset,
|
|
400
378
|
battery: Battery,
|
|
401
379
|
"log-in": LogIn,
|
|
402
|
-
gitlab: Gitlab,
|
|
403
380
|
map: Map,
|
|
404
381
|
"corner-up-right": CornerUpRight,
|
|
405
382
|
"zap-off": ZapOff,
|
|
@@ -411,7 +388,6 @@ const icons = {
|
|
|
411
388
|
"eye-off": EyeOff,
|
|
412
389
|
octagon: Octagon,
|
|
413
390
|
edit: Edit,
|
|
414
|
-
pocket: Pocket,
|
|
415
391
|
"refresh-ccw": RefreshCcw,
|
|
416
392
|
truck: Truck,
|
|
417
393
|
"volume-2": Volume2,
|
|
@@ -452,7 +428,6 @@ const icons = {
|
|
|
452
428
|
pause: Pause,
|
|
453
429
|
"phone-outgoing": PhoneOutgoing,
|
|
454
430
|
save: Save,
|
|
455
|
-
facebook: Facebook,
|
|
456
431
|
"user-x": UserX,
|
|
457
432
|
"pen-tool": PenTool,
|
|
458
433
|
"trash-2": Trash2,
|
|
@@ -482,7 +457,6 @@ const icons = {
|
|
|
482
457
|
"external-link": ExternalLink,
|
|
483
458
|
menu: Menu,
|
|
484
459
|
"pause-circle": PauseCircle,
|
|
485
|
-
instagram: Instagram,
|
|
486
460
|
"toggle-left": ToggleLeft,
|
|
487
461
|
speaker: Speaker,
|
|
488
462
|
image: Image,
|
|
@@ -517,7 +491,6 @@ const icons = {
|
|
|
517
491
|
database: Database,
|
|
518
492
|
search: Search,
|
|
519
493
|
globe: Globe,
|
|
520
|
-
github: Github,
|
|
521
494
|
bell: Bell,
|
|
522
495
|
monitor: Monitor,
|
|
523
496
|
scissors: Scissors,
|
|
@@ -543,7 +516,6 @@ const icons = {
|
|
|
543
516
|
"log-out": LogOut,
|
|
544
517
|
underline: Underline,
|
|
545
518
|
triangle: Triangle,
|
|
546
|
-
slack: Slack,
|
|
547
519
|
watch: Watch,
|
|
548
520
|
disc: Disc,
|
|
549
521
|
"stop-circle": StopCircle,
|
|
@@ -559,7 +531,6 @@ const icons = {
|
|
|
559
531
|
"thumbs-down": ThumbsDown,
|
|
560
532
|
download: Download,
|
|
561
533
|
umbrella: Umbrella,
|
|
562
|
-
framer: Framer,
|
|
563
534
|
sun: Sun,
|
|
564
535
|
"phone-call": PhoneCall,
|
|
565
536
|
"alert-circle": AlertCircle,
|
|
@@ -567,7 +538,6 @@ const icons = {
|
|
|
567
538
|
target: Target,
|
|
568
539
|
"life-buoy": LifeBuoy,
|
|
569
540
|
shield: Shield,
|
|
570
|
-
youtube: Youtube,
|
|
571
541
|
cpu: Cpu,
|
|
572
542
|
users: Users,
|
|
573
543
|
mail: Mail,
|
|
@@ -576,9 +546,7 @@ const icons = {
|
|
|
576
546
|
"credit-card": CreditCard,
|
|
577
547
|
lock: Lock,
|
|
578
548
|
maximize: Maximize,
|
|
579
|
-
twitter: Twitter,
|
|
580
549
|
inbox: Inbox,
|
|
581
|
-
linkedin: Linkedin,
|
|
582
550
|
"shopping-cart": ShoppingCart,
|
|
583
551
|
play: Play,
|
|
584
552
|
code: Code,
|
|
@@ -586,7 +554,6 @@ const icons = {
|
|
|
586
554
|
"more-horizontal": MoreHorizontal,
|
|
587
555
|
percent: Percent,
|
|
588
556
|
"help-circle": HelpCircle,
|
|
589
|
-
trello: Trello,
|
|
590
557
|
shuffle: Shuffle,
|
|
591
558
|
sliders: Sliders,
|
|
592
559
|
volume: Volume,
|
|
@@ -595,7 +562,6 @@ const icons = {
|
|
|
595
562
|
sunset: Sunset,
|
|
596
563
|
battery: Battery,
|
|
597
564
|
"log-in": LogIn,
|
|
598
|
-
gitlab: Gitlab,
|
|
599
565
|
map: Map,
|
|
600
566
|
"corner-up-right": CornerUpRight,
|
|
601
567
|
"zap-off": ZapOff,
|
|
@@ -607,7 +573,6 @@ const icons = {
|
|
|
607
573
|
"eye-off": EyeOff,
|
|
608
574
|
octagon: Octagon,
|
|
609
575
|
edit: Edit,
|
|
610
|
-
pocket: Pocket,
|
|
611
576
|
"refresh-ccw": RefreshCcw,
|
|
612
577
|
truck: Truck,
|
|
613
578
|
"volume-2": Volume2,
|
|
@@ -648,7 +613,6 @@ const icons = {
|
|
|
648
613
|
pause: Pause,
|
|
649
614
|
"phone-outgoing": PhoneOutgoing,
|
|
650
615
|
save: Save,
|
|
651
|
-
facebook: Facebook,
|
|
652
616
|
"user-x": UserX,
|
|
653
617
|
"pen-tool": PenTool,
|
|
654
618
|
"trash-2": Trash2,
|
|
@@ -678,7 +642,6 @@ const icons = {
|
|
|
678
642
|
"external-link": ExternalLink,
|
|
679
643
|
menu: Menu,
|
|
680
644
|
"pause-circle": PauseCircle,
|
|
681
|
-
instagram: Instagram,
|
|
682
645
|
"toggle-left": ToggleLeft,
|
|
683
646
|
speaker: Speaker,
|
|
684
647
|
image: Image,
|
package/frappe/index.d.ts
CHANGED
|
@@ -50,6 +50,16 @@ declare module 'frappe-ui/frappe' {
|
|
|
50
50
|
// Components
|
|
51
51
|
export const Link: Component
|
|
52
52
|
export type { LinkProps } from './Link/types'
|
|
53
|
+
|
|
54
|
+
// Telemetry
|
|
55
|
+
export function useTelemetry(): {
|
|
56
|
+
isEnabled: { readonly value: boolean }
|
|
57
|
+
disable: () => void
|
|
58
|
+
capture: (event_name: string, data?: Record<string, any>) => void
|
|
59
|
+
}
|
|
60
|
+
export const telemetryPlugin: {
|
|
61
|
+
install: (app: import('vue').App, options: { app_name: string }) => Promise<void>
|
|
62
|
+
}
|
|
53
63
|
}
|
|
54
64
|
|
|
55
65
|
// Data Import
|
|
@@ -28,7 +28,7 @@ const state = reactive({
|
|
|
28
28
|
:open-on-focus="state.openOnFocus"
|
|
29
29
|
:placement="state.placement"
|
|
30
30
|
/>
|
|
31
|
-
<div class="mt-2 text-sm text-gray-
|
|
31
|
+
<div class="mt-2 text-sm text-ink-gray-6">
|
|
32
32
|
Selected: {{ basicValue || 'None' }}
|
|
33
33
|
</div>
|
|
34
34
|
</div>
|
|
@@ -43,7 +43,7 @@ const state = reactive({
|
|
|
43
43
|
:placeholder="state.placeholder"
|
|
44
44
|
:disabled="state.disabled"
|
|
45
45
|
/>
|
|
46
|
-
<div class="mt-2 text-sm text-gray-
|
|
46
|
+
<div class="mt-2 text-sm text-ink-gray-6">
|
|
47
47
|
Selected: {{ basicValue || 'None' }}
|
|
48
48
|
</div>
|
|
49
49
|
</div>
|
|
@@ -58,7 +58,7 @@ const state = reactive({
|
|
|
58
58
|
:placeholder="state.placeholder"
|
|
59
59
|
:disabled="state.disabled"
|
|
60
60
|
/>
|
|
61
|
-
<div class="mt-2 text-sm text-gray-
|
|
61
|
+
<div class="mt-2 text-sm text-ink-gray-6">
|
|
62
62
|
Selected: {{ basicValue || 'None' }}
|
|
63
63
|
</div>
|
|
64
64
|
</div>
|
|
@@ -73,7 +73,7 @@ const state = reactive({
|
|
|
73
73
|
:placeholder="state.placeholder"
|
|
74
74
|
:disabled="state.disabled"
|
|
75
75
|
/>
|
|
76
|
-
<div class="mt-2 text-sm text-gray-
|
|
76
|
+
<div class="mt-2 text-sm text-ink-gray-6">
|
|
77
77
|
Selected: {{ basicValue || 'None' }}
|
|
78
78
|
</div>
|
|
79
79
|
</div>
|
|
@@ -87,7 +87,7 @@ const state = reactive({
|
|
|
87
87
|
:placeholder="state.placeholder"
|
|
88
88
|
:disabled="state.disabled"
|
|
89
89
|
/>
|
|
90
|
-
<div class="mt-2 text-sm text-gray-
|
|
90
|
+
<div class="mt-2 text-sm text-ink-gray-6">
|
|
91
91
|
Selected: {{ preselectedValue || 'None' }}
|
|
92
92
|
</div>
|
|
93
93
|
</div>
|
|
@@ -101,7 +101,7 @@ const state = reactive({
|
|
|
101
101
|
placeholder="This is disabled"
|
|
102
102
|
:disabled="true"
|
|
103
103
|
/>
|
|
104
|
-
<div class="mt-2 text-sm text-gray-
|
|
104
|
+
<div class="mt-2 text-sm text-ink-gray-6">
|
|
105
105
|
Icon picker is disabled
|
|
106
106
|
</div>
|
|
107
107
|
</div>
|
package/package.json
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "frappe-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0-beta.0",
|
|
4
4
|
"description": "A set of components and utilities for rapid UI development",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
7
7
|
"scripts": {
|
|
8
8
|
"test": "vitest --run",
|
|
9
|
-
"
|
|
9
|
+
"test:coverage": "vitest --run --coverage",
|
|
10
|
+
"test:cypress": "cypress run --component",
|
|
11
|
+
"test:cypress:coverage": "cross-env COVERAGE=true cypress run --component",
|
|
12
|
+
"coverage": "yarn test:coverage && yarn test:cypress:coverage && yarn coverage:merge",
|
|
13
|
+
"coverage:merge": "tsx .github/scripts/merge-coverage.ts",
|
|
14
|
+
"type-check": "vue-tsc --noEmit",
|
|
15
|
+
"type-check:tsc": "tsc --noEmit",
|
|
10
16
|
"prettier": "yarn run prettier -w ./src",
|
|
11
17
|
"bump-and-release": "yarn test && git pull --rebase origin main && yarn run release-patch",
|
|
12
18
|
"release-patch": "yarn version --patch && git push && git push --tags",
|
|
19
|
+
"bump-and-release-beta": "yarn test && git pull --rebase origin main && yarn run release-beta",
|
|
20
|
+
"release-beta": "yarn version --prerelease --preid beta && git push && git push --tags",
|
|
13
21
|
"dev": "vite",
|
|
14
22
|
"build": "vite build",
|
|
15
23
|
"preview": "vite preview",
|
|
@@ -40,6 +48,10 @@
|
|
|
40
48
|
"import": "./tailwind/index.js",
|
|
41
49
|
"default": "./tailwind/index.js"
|
|
42
50
|
},
|
|
51
|
+
"./tailwind/tokens.js": {
|
|
52
|
+
"import": "./tailwind/tokens.js",
|
|
53
|
+
"default": "./tailwind/tokens.js"
|
|
54
|
+
},
|
|
43
55
|
"./vite": {
|
|
44
56
|
"import": "./vite/index.js"
|
|
45
57
|
},
|
|
@@ -70,8 +82,6 @@
|
|
|
70
82
|
"author": "Frappe Technologies Pvt. Ltd.",
|
|
71
83
|
"license": "MIT",
|
|
72
84
|
"dependencies": {
|
|
73
|
-
"@floating-ui/dom": "^1.7.4",
|
|
74
|
-
"@floating-ui/vue": "^1.1.6",
|
|
75
85
|
"@headlessui/vue": "^1.7.14",
|
|
76
86
|
"@popperjs/core": "^2.11.2",
|
|
77
87
|
"@tailwindcss/forms": "^0.5.3",
|
|
@@ -104,19 +114,19 @@
|
|
|
104
114
|
"@tiptap/vue-3": "^3.11.0",
|
|
105
115
|
"@vueuse/core": "^10.4.1",
|
|
106
116
|
"dayjs": "^1.11.13",
|
|
107
|
-
"dompurify": "^3.
|
|
117
|
+
"dompurify": "^3.4.0",
|
|
108
118
|
"echarts": "^5.6.0",
|
|
109
119
|
"feather-icons": "^4.28.0",
|
|
120
|
+
"fuzzysort": "^3.1.0",
|
|
110
121
|
"grid-layout-plus": "^1.1.0",
|
|
111
122
|
"highlight.js": "^11.11.1",
|
|
112
123
|
"idb-keyval": "^6.2.0",
|
|
113
124
|
"lowlight": "^3.3.0",
|
|
114
|
-
"lucide-static": "^
|
|
125
|
+
"lucide-static": "^1.16.0",
|
|
115
126
|
"marked": "^15.0.12",
|
|
116
127
|
"ora": "5.4.1",
|
|
117
128
|
"prettier": "^3.3.2",
|
|
118
129
|
"prosemirror-tables": "^1.8.1",
|
|
119
|
-
"radix-vue": "^1.5.3",
|
|
120
130
|
"reka-ui": "^2.5.0",
|
|
121
131
|
"slugify": "^1.6.6",
|
|
122
132
|
"socket.io-client": "^4.5.1",
|
|
@@ -124,38 +134,58 @@
|
|
|
124
134
|
"typescript": "^5.0.2",
|
|
125
135
|
"unplugin-auto-import": "^19.3.0",
|
|
126
136
|
"unplugin-icons": "^22.1.0",
|
|
127
|
-
"unplugin-vue-components": "^
|
|
137
|
+
"unplugin-vue-components": "^32.0.0",
|
|
138
|
+
"vue-sonner": "^2.0.9"
|
|
128
139
|
},
|
|
129
140
|
"peerDependencies": {
|
|
130
141
|
"vue": ">=3.5.0",
|
|
131
142
|
"vue-router": "^4.1.6"
|
|
132
143
|
},
|
|
133
144
|
"devDependencies": {
|
|
134
|
-
"@
|
|
145
|
+
"@cypress/code-coverage": "^3.13.10",
|
|
146
|
+
"@vitejs/plugin-vue": "^6.0.7",
|
|
147
|
+
"@vitest/coverage-v8": "^3.2.4",
|
|
135
148
|
"autoprefixer": "^10.4.13",
|
|
149
|
+
"cross-env": "^7.0.3",
|
|
136
150
|
"cypress": "^15.8.2",
|
|
137
151
|
"cypress-split": "^1.24.28",
|
|
138
152
|
"jsdom": "^27.4.0",
|
|
139
153
|
"lint-staged": ">=10",
|
|
140
154
|
"msw": "^2.7.0",
|
|
141
|
-
"
|
|
155
|
+
"nyc": "^17.1.0",
|
|
156
|
+
"postcss": "^8.5.10",
|
|
142
157
|
"prettier-plugin-tailwindcss": "^0.1.13",
|
|
143
158
|
"tailwindcss": "^3.2.7",
|
|
144
159
|
"tsx": "^4.20.6",
|
|
145
|
-
"vite": "^
|
|
160
|
+
"vite": "^7.3.2",
|
|
161
|
+
"vite-plugin-istanbul": "^9.0.0",
|
|
146
162
|
"vitepress": "^2.0.0-alpha.15",
|
|
147
|
-
"vitest": "^2.
|
|
163
|
+
"vitest": "^3.2.4",
|
|
148
164
|
"vue": "^3.3.0",
|
|
149
165
|
"vue-component-meta": "^3.1.8",
|
|
150
|
-
"vue-router": "^4.1.6"
|
|
166
|
+
"vue-router": "^4.1.6",
|
|
167
|
+
"vue-tsc": "^3.2.7"
|
|
151
168
|
},
|
|
152
169
|
"resolutions": {
|
|
153
170
|
"prosemirror-model": "1.25.2",
|
|
154
171
|
"prosemirror-state": "1.4.3",
|
|
155
172
|
"prosemirror-view": "1.40.0",
|
|
156
|
-
"prosemirror-transform": "1.10.4"
|
|
173
|
+
"prosemirror-transform": "1.10.4",
|
|
174
|
+
"defu": "^6.1.5",
|
|
175
|
+
"esbuild": "^0.25.0",
|
|
176
|
+
"lodash": "^4.18.0",
|
|
177
|
+
"markdown-it": "^14.1.1",
|
|
178
|
+
"qs": "^6.14.2",
|
|
179
|
+
"rollup": "^4.59.0",
|
|
180
|
+
"socket.io-parser": "^4.2.6",
|
|
181
|
+
"systeminformation": "^5.31.6",
|
|
182
|
+
"ws": "^8.20.1",
|
|
183
|
+
"postcss": "^8.5.10",
|
|
184
|
+
"vite": "^7.3.2",
|
|
185
|
+
"picomatch": "^4.0.4",
|
|
186
|
+
"js-yaml": "^4.1.1"
|
|
157
187
|
},
|
|
158
188
|
"lint-staged": {
|
|
159
189
|
"*.{js,css,md,vue}": "prettier --write"
|
|
160
190
|
}
|
|
161
|
-
}
|
|
191
|
+
}
|
package/readme.md
CHANGED
|
@@ -83,6 +83,18 @@ Now, you can import needed components and start using it:
|
|
|
83
83
|
</script>
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
+
## Claude Code skill
|
|
87
|
+
|
|
88
|
+
For AI coding agents (Claude Code, Cursor, Codex, etc.), Frappe UI ships an agent skill that teaches the agent the library's conventions — semantic Tailwind tokens, the `variant` + `theme` color axes, the `useCall` data-fetching composable, common UI recipes, and anti-patterns to avoid.
|
|
89
|
+
|
|
90
|
+
Install with [Vercel's `skills` CLI](https://github.com/vercel-labs/skills):
|
|
91
|
+
|
|
92
|
+
```sh
|
|
93
|
+
npx skills add https://github.com/frappe/frappe-ui/tree/main/skills/frappe-ui
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
The skill lives in [`skills/frappe-ui/`](./skills/frappe-ui/) and is updated alongside the library.
|
|
97
|
+
|
|
86
98
|
## Used By
|
|
87
99
|
|
|
88
100
|
Frappe UI is being used in a lot of products by
|