@vuetkit/components 0.0.16 → 0.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { RequestService } from "@vuetkit/core";
2
- import { CollapseItemProps, CollapseModelValue, CollapseProps, ComponentSize, DescriptionItemProps, DescriptionProps, DialogProps, FormRules, MessageProps, MessageType, PaginationProps, StepProps, StepsProps, TabPaneName, TableProps, TabsPaneContext, TabsProps } from "element-plus";
2
+ import { CollapseItemProps, CollapseModelValue, CollapseProps, ComponentSize, DescriptionItemProps, DescriptionProps, DialogProps, ElDropdown, FormRules, MessageProps, MessageType, PaginationProps, StepProps, StepsProps, TabPaneName, TableProps, TabsPaneContext, TabsProps } from "element-plus";
3
3
  import { CSSProperties, Component, MaybeRef, Ref, VNode } from "vue";
4
4
  import { TableColumnProps } from "element-plus/es/components/table/src/table-column/defaults.mjs";
5
5
 
@@ -124,6 +124,29 @@ declare function setDeepProperty(data: Recordable, propArr: string[], value: unk
124
124
  declare function useForm(options: undefined): [null, Recordable];
125
125
  declare function useForm<T extends object>(options: FormOptions<T>): FormReturnType<T>;
126
126
  //#endregion
127
+ //#region src/navigation/useDropdown/index.d.ts
128
+ type ElDropdownProps = InstanceType<typeof ElDropdown>['$props'];
129
+ interface DropdownItem {
130
+ label?: string;
131
+ command?: string | number | object;
132
+ disabled?: boolean;
133
+ divided?: boolean;
134
+ icon?: string | Component;
135
+ render?: (val: unknown) => VNode;
136
+ }
137
+ interface DropdownOptions<T> extends Partial<ElDropdownProps> {
138
+ items?: DropdownItem[];
139
+ service?: RequestService<T>;
140
+ params?: unknown;
141
+ formatData?: (data: T) => DropdownItem[];
142
+ defaultCommand?: string | number | object;
143
+ onCommand?: (command: string | number | object) => void;
144
+ onVisibleChange?: (visible: boolean) => void;
145
+ onClick?: () => void;
146
+ }
147
+ type DropdownReturnType = [Component, Ref<string | number | object | undefined>];
148
+ declare function useDropdown<T>(options: DropdownOptions<T>): DropdownReturnType;
149
+ //#endregion
127
150
  //#region src/navigation/useSteps/index.d.ts
128
151
  interface StepsColumn extends Partial<StepProps> {
129
152
  title?: string;
@@ -223,4 +246,4 @@ interface TableOptions<T extends DefaultRow> extends TableProps<T> {
223
246
  type TableReturn = [Component];
224
247
  declare function useTable<T extends DefaultRow>(options: TableOptions<T>): TableReturn;
225
248
  //#endregion
226
- export { AsyncConfirmOptions, CollapseColumn, CollapseOptions, CollapseReturnType, CustomRender, DefaultComponentKey, DescriptionsColumn, DescriptionsOptions, DescriptionsReturnType, FormItemType, FormOptions, FormReturnType, FormRuleFn, FormSchema, PaginationOptions, Recordable, StepsColumn, StepsOptions, StepsReturnType, TableColumnOptions, TableOptions, TableReturn, TabsColumn, TabsOptions, TabsReturnType, setDeepProperty, useAsyncConfirm, useCollapse, useDescriptions, useDialog, useForm, useMessage, useSteps, useTable, useTabs };
249
+ export { AsyncConfirmOptions, CollapseColumn, CollapseOptions, CollapseReturnType, CustomRender, DefaultComponentKey, DescriptionsColumn, DescriptionsOptions, DescriptionsReturnType, DropdownItem, DropdownOptions, DropdownReturnType, FormItemType, FormOptions, FormReturnType, FormRuleFn, FormSchema, PaginationOptions, Recordable, StepsColumn, StepsOptions, StepsReturnType, TableColumnOptions, TableOptions, TableReturn, TabsColumn, TabsOptions, TabsReturnType, setDeepProperty, useAsyncConfirm, useCollapse, useDescriptions, useDialog, useDropdown, useForm, useMessage, useSteps, useTable, useTabs };
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { useRequest } from "@vuetkit/core";
2
- import { ElButton, ElCascader, ElCheckbox, ElCol, ElCollapse, ElCollapseItem, ElColorPicker, ElDatePicker, ElDescriptions, ElDescriptionsItem, ElDialog, ElForm, ElFormItem, ElInput, ElInputNumber, ElInputOtp, ElMention, ElMessage, ElMessageBox, ElPagination, ElRadio, ElRate, ElRow, ElScrollbar, ElSelect, ElSelectV2, ElSlider, ElStep, ElSteps, ElSwitch, ElTabPane, ElTable, ElTableColumn, ElTabs, ElTimePicker, ElTimeSelect, ElTransfer, ElTreeSelect, ElUpload, vLoading } from "element-plus";
2
+ import { ElButton, ElCascader, ElCheckbox, ElCol, ElCollapse, ElCollapseItem, ElColorPicker, ElDatePicker, ElDescriptions, ElDescriptionsItem, ElDialog, ElDropdown, ElDropdownItem, ElDropdownMenu, ElForm, ElFormItem, ElInput, ElInputNumber, ElInputOtp, ElMention, ElMessage, ElMessageBox, ElPagination, ElRadio, ElRate, ElRow, ElScrollbar, ElSelect, ElSelectV2, ElSlider, ElStep, ElSteps, ElSwitch, ElTabPane, ElTable, ElTableColumn, ElTabs, ElTimePicker, ElTimeSelect, ElTransfer, ElTreeSelect, ElUpload, vLoading } from "element-plus";
3
3
  import { computed, defineComponent, h, nextTick, onMounted, reactive, ref, toValue, useTemplateRef, watch, withDirectives } from "vue";
4
4
  import { isFunc, realObj } from "@vuetkit/shared";
5
5
  //#region src/data/useCollapse/index.ts
@@ -425,6 +425,67 @@ function useForm(options) {
425
425
  }];
426
426
  }
427
427
  //#endregion
428
+ //#region src/navigation/useDropdown/index.ts
429
+ function useDropdown(options) {
430
+ const { items = [], service, params, formatData, defaultCommand, onCommand, onVisibleChange, onClick, ...rest } = options;
431
+ const { data, loading } = service ? useRequest(service, {
432
+ defaultParams: params,
433
+ formatData: formatData || void 0
434
+ }) : {};
435
+ const command = ref(defaultCommand);
436
+ const dropdownColumns = computed(() => (data === null || data === void 0 ? void 0 : data.value) || items);
437
+ return [defineComponent({ setup(_, { slots, emit }) {
438
+ const renderItems = () => {
439
+ var _dropdownColumns$valu;
440
+ return (_dropdownColumns$valu = dropdownColumns.value) === null || _dropdownColumns$valu === void 0 ? void 0 : _dropdownColumns$valu.map((item) => {
441
+ return h(ElDropdownItem, {
442
+ command: item.command,
443
+ disabled: item.disabled,
444
+ divided: item.divided,
445
+ icon: item.icon
446
+ }, { default: () => {
447
+ if (item === null || item === void 0 ? void 0 : item.render) return item.render(item);
448
+ return item.label || "";
449
+ } });
450
+ });
451
+ };
452
+ const handleCommand = (cmd) => {
453
+ command.value = cmd;
454
+ onCommand === null || onCommand === void 0 || onCommand(cmd);
455
+ emit("command", cmd);
456
+ };
457
+ const handleVisibleChange = (visible) => {
458
+ onVisibleChange === null || onVisibleChange === void 0 || onVisibleChange(visible);
459
+ emit("visible-change", visible);
460
+ };
461
+ const handleClick = () => {
462
+ onClick === null || onClick === void 0 || onClick();
463
+ emit("click");
464
+ };
465
+ return () => {
466
+ var _loading$value;
467
+ return withDirectives(h(ElDropdown, {
468
+ ...rest,
469
+ "onCommand": handleCommand,
470
+ "onVisible-change": handleVisibleChange,
471
+ "onClick": handleClick
472
+ }, {
473
+ default: () => {
474
+ if (slots.default) return slots.default();
475
+ return "";
476
+ },
477
+ dropdown: () => {
478
+ if (slots.dropdown) return slots.dropdown();
479
+ return h(ElDropdownMenu, {}, { default: () => {
480
+ if (!dropdownColumns.value.length) return "";
481
+ return renderItems();
482
+ } });
483
+ }
484
+ }), [[vLoading, (_loading$value = loading === null || loading === void 0 ? void 0 : loading.value) !== null && _loading$value !== void 0 ? _loading$value : false]]);
485
+ };
486
+ } }), command];
487
+ }
488
+ //#endregion
428
489
  //#region src/navigation/useSteps/index.ts
429
490
  function useSteps(options) {
430
491
  const { steps = [], service, params, formatData, defaultActive = 0, ...rest } = options;
@@ -698,4 +759,4 @@ function useTable(options) {
698
759
  })];
699
760
  }
700
761
  //#endregion
701
- export { setDeepProperty, useAsyncConfirm, useCollapse, useDescriptions, useDialog, useForm, useMessage, useSteps, useTable, useTabs };
762
+ export { setDeepProperty, useAsyncConfirm, useCollapse, useDescriptions, useDialog, useDropdown, useForm, useMessage, useSteps, useTable, useTabs };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vuetkit/components",
3
3
  "type": "module",
4
- "version": "0.0.16",
4
+ "version": "0.0.17",
5
5
  "description": "Collection of business development components for Vue3 projects",
6
6
  "author": "Kalu5",
7
7
  "license": "MIT",
@@ -21,8 +21,8 @@
21
21
  "vue": "^3.5.35"
22
22
  },
23
23
  "dependencies": {
24
- "@vuetkit/core": "0.0.16",
25
- "@vuetkit/shared": "0.0.16"
24
+ "@vuetkit/core": "0.0.17",
25
+ "@vuetkit/shared": "0.0.17"
26
26
  },
27
27
  "scripts": {
28
28
  "build": "tsdown --config-loader tsx"