@kizmann/nano-ui 3.0.0 → 3.0.1

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.
Files changed (137) hide show
  1. package/dist/nano-ui.css +1 -1
  2. package/dist/nano-ui.esm.js +1 -1
  3. package/dist/nano-ui.esm.js.map +1 -1
  4. package/dist/themes/default.css +1 -1
  5. package/package.json +3 -3
  6. package/src/button/js/button/NButtonView.ts +1 -1
  7. package/src/cascader/css/cascader-panel.scss +1 -1
  8. package/src/cascader/js/cascader/NCascaderController.ts +32 -16
  9. package/src/cascader/js/cascader/NCascaderView.ts +1 -1
  10. package/src/cascader/js/cascader-panel/NCascaderPanelController.ts +55 -24
  11. package/src/cascader/js/cascader-panel/NCascaderPanelView.ts +10 -9
  12. package/src/cascader/js/helper/NCascaderHelper.ts +3 -7
  13. package/src/checkbox/css/checkbox-group.scss +0 -8
  14. package/src/checkbox/css/checkbox.scss +6 -0
  15. package/src/checkbox/js/checkbox/NCheckbox.ts +7 -0
  16. package/src/checkbox/js/checkbox/NCheckboxData.ts +8 -1
  17. package/src/checkbox/js/checkbox-group/NCheckboxGroup.ts +7 -0
  18. package/src/checkbox/js/checkbox-group/NCheckboxGroupData.ts +5 -0
  19. package/src/collapse/css/collapse-item.scss +1 -1
  20. package/src/collapse/js/collapse-item/NCollapseItem.ts +5 -0
  21. package/src/collapse/js/collapse-item/NCollapseItemView.ts +6 -3
  22. package/src/config/js/config/NConfig.ts +5 -0
  23. package/src/config/js/config/NConfigController.ts +2 -2
  24. package/src/config/js/config/NConfigView.ts +5 -1
  25. package/src/draggable/css/draghandler.scss +11 -8
  26. package/src/draggable/js/drag/NDragIndicator.ts +4 -0
  27. package/src/draggable/js/drag/NDragReciever.ts +2 -2
  28. package/src/draggable/js/draglist/NDraglist.ts +6 -0
  29. package/src/draggable/js/draglist/NDraglistController.ts +157 -24
  30. package/src/draggable/js/draglist/NDraglistView.ts +43 -12
  31. package/src/draggable/js/dropzone/NDropzone.ts +14 -0
  32. package/src/draggable/js/dropzone/NDropzoneController.ts +27 -1
  33. package/src/draggable/js/dropzone/NDropzoneData.ts +10 -0
  34. package/src/draggable/js/dropzone/NDropzoneView.ts +3 -7
  35. package/src/empty/js/empty-icon/NEmptyIcon.ts +1 -1
  36. package/src/form/js/form/NForm.ts +1 -1
  37. package/src/form/js/form/NFormController.ts +20 -1
  38. package/src/form/js/form-bag/NFormBagController.ts +4 -0
  39. package/src/form/js/form-bag/NFormBagView.ts +2 -1
  40. package/src/form/js/form-item/NFormItemView.ts +1 -1
  41. package/src/form/js/form-rules/module/NFormRuleRequiredIf.ts +4 -0
  42. package/src/form/js/form-rules/module/NFormRuleRequiredUnless.ts +4 -0
  43. package/src/index.scss +1 -1
  44. package/src/info/css/info-field.scss +4 -4
  45. package/src/info/js/info/NInfoView.ts +1 -4
  46. package/src/info/js/info-column/NInfoColumnView.ts +6 -2
  47. package/src/input/css/input-number.scss +5 -0
  48. package/src/input/js/input-number/NInputNumberController.ts +4 -4
  49. package/src/input/js/textarea/NTextareaView.ts +3 -3
  50. package/src/modal/css/modal.scss +4 -0
  51. package/src/modal/js/drawer/NDrawerController.ts +16 -3
  52. package/src/modal/js/handler/NModalElement.ts +14 -0
  53. package/src/modal/js/handler/NModalHandler.ts +13 -0
  54. package/src/modal/js/modal/NModal.ts +7 -0
  55. package/src/modal/js/modal/NModalController.ts +20 -2
  56. package/src/modal/js/modal/NModalData.ts +18 -2
  57. package/src/modal/js/modal/NModalView.ts +7 -9
  58. package/src/popover/css/popover.scss +5 -10
  59. package/src/popover/js/handler/NPopoverElement.ts +4 -0
  60. package/src/popover/js/popover/NPopover.ts +7 -0
  61. package/src/popover/js/popover/NPopoverController.ts +10 -2
  62. package/src/popover/js/popover/NPopoverData.ts +5 -0
  63. package/src/popover/js/popover/NPopoverView.ts +22 -3
  64. package/src/popover/js/popover-panel/NPopoverPanelController.ts +3 -1
  65. package/src/preview/css/preview.scss +0 -6
  66. package/src/preview/js/handler/NPreviewHandler.ts +3 -3
  67. package/src/preview/js/preview/NPreview.ts +2 -2
  68. package/src/preview/js/preview/NPreviewController.ts +7 -8
  69. package/src/preview/js/preview/NPreviewData.ts +8 -1
  70. package/src/preview/js/preview/NPreviewView.ts +15 -12
  71. package/src/preview/js/preview-module/NPreviewFileModule.ts +1 -1
  72. package/src/radio/css/radio-group.scss +0 -8
  73. package/src/radio/css/radio.scss +6 -0
  74. package/src/radio/js/radio/NRadio.ts +9 -2
  75. package/src/radio/js/radio/NRadioData.ts +8 -1
  76. package/src/radio/js/radio-group/NRadioGroup.ts +9 -2
  77. package/src/radio/js/radio-group/NRadioGroupData.ts +5 -0
  78. package/src/resizer/css/resizer.scss +4 -0
  79. package/src/resizer/js/resizer/NResizerController.ts +5 -1
  80. package/src/resizer/js/resizer/NResizerData.ts +0 -35
  81. package/src/resizer/js/resizer/NResizerView.ts +4 -0
  82. package/src/root/css/helpers.scss +20 -0
  83. package/src/root/css/tooltip.scss +39 -49
  84. package/src/root/js/controller/GroupController.ts +1 -1
  85. package/src/root/js/data/DragData.ts +8 -0
  86. package/src/root/js/module/Pointer.ts +18 -0
  87. package/src/root/js/module/Styler.ts +4 -0
  88. package/src/root/js/prop/BaseProps.ts +33 -0
  89. package/src/root/js/prop/DragProps.ts +7 -0
  90. package/src/root/js/proto/ProtoView.ts +5 -2
  91. package/src/scrollbar/css/scrollbar.scss +6 -1
  92. package/src/scrollbar/js/handler/NScrollbarElement.ts +4 -0
  93. package/src/scrollbar/js/virtualbar/NVirtualbar.ts +3 -0
  94. package/src/scrollbar/js/virtualbar/NVirtualbarController.ts +1 -1
  95. package/src/scrollbar/js/virtualbar/NVirtualbarView.ts +53 -51
  96. package/src/select/js/select/NSelectController.ts +3 -1
  97. package/src/signal/js/alert/NAlertElement.ts +4 -2
  98. package/src/signal/js/confirm/NConfirmElement.ts +4 -4
  99. package/src/signal/js/notify/NNotifyElement.ts +1 -1
  100. package/src/switch/js/switch/NSwitchController.ts +20 -4
  101. package/src/table/css/table.scss +39 -6
  102. package/src/table/js/table/NTable.ts +3 -0
  103. package/src/table/js/table/NTableController.ts +6 -4
  104. package/src/table/js/table/NTableView.ts +62 -14
  105. package/src/table/js/table-cell/NTableCellImage.ts +1 -1
  106. package/src/table/js/table-cell/NTableCellOption.ts +1 -1
  107. package/src/table/js/table-column/NTableColumn.ts +7 -0
  108. package/src/table/js/table-column/NTableColumnData.ts +5 -0
  109. package/src/table/js/table-filter/NTableFilterOption.ts +5 -7
  110. package/src/table/js/table-filter/NTableFilterString.ts +1 -1
  111. package/src/tabs/js/tabs/NTabsController.ts +5 -1
  112. package/src/tabs/js/tabs/NTabsView.ts +4 -0
  113. package/src/tabs/js/tabs-item/NTabsItemController.ts +17 -3
  114. package/src/tabs/js/tabs-item/NTabsItemView.ts +12 -9
  115. package/src/transfer/js/transfer/NTransferController.ts +14 -10
  116. package/src/transfer/js/transfer/NTransferView.ts +2 -2
  117. package/src/visuals/css/message.scss +99 -0
  118. package/src/visuals/css/progress.scss +39 -0
  119. package/src/visuals/index.scss +2 -0
  120. package/src/visuals/index.ts +4 -0
  121. package/src/visuals/js/message/NMessage.ts +65 -0
  122. package/src/visuals/js/message/NMessageController.ts +96 -0
  123. package/src/visuals/js/message/NMessageData.ts +43 -0
  124. package/src/visuals/js/message/NMessageView.ts +101 -0
  125. package/src/visuals/js/progress/NProgress.ts +63 -0
  126. package/src/visuals/js/progress/NProgressController.ts +48 -0
  127. package/src/visuals/js/progress/NProgressData.ts +75 -0
  128. package/src/visuals/js/progress/NProgressView.ts +48 -0
  129. package/themes/default/checkbox/src/checkbox/checkbox.scss +13 -0
  130. package/themes/default/input-number/src/input-number/input-number.scss +6 -13
  131. package/themes/default/preview/src/preview/preview.scss +11 -2
  132. package/themes/default/radio/src/radio/radio.scss +13 -0
  133. package/themes/default/root/vars/colors-dark-bluish.scss +1 -0
  134. package/themes/default/root/vars/colors-dark.scss +1 -0
  135. package/themes/default/root/vars/colors-light-bluish.scss +2 -1
  136. package/themes/default/root/vars/colors-light.scss +2 -1
  137. package/themes/default/scrollbar/src/scrollbar/scrollbar.scss +1 -1
@@ -1,6 +1,5 @@
1
- import { onMounted, SetupContext } from "vue";
2
- import { Arr, Locale, Mix, Obj, Run, Str } from "@kizmann/pico-js";
3
- import { ProtoExtend } from "../../../root/index.ts";
1
+ import { provide, SetupContext } from "vue";
2
+ import { Mix, Obj, Run } from "@kizmann/pico-js";
4
3
  import { NPopoverPanelController } from "../../../popover/js/popover-panel/NPopoverPanelController.ts";
5
4
  import { NCascaderView } from "./NCascaderView.ts";
6
5
  import { NCascaderData } from "./NCascaderData.ts";
@@ -34,36 +33,53 @@ export class NCascaderController extends NPopoverPanelController
34
33
  new NCascaderData(this),
35
34
  ];
36
35
 
37
- this.setup();
36
+ if ( this.constructor.name === 'NCascaderController' ) {
37
+ this.setup();
38
+ }
38
39
  }
39
40
 
40
41
  setup()
41
42
  {
42
43
  super.setup();
43
44
 
44
- this
45
- .cloneProp('modelValue')
46
- .cloneProp('splitValue');
45
+ this.cloneProp('options');
46
+ this.cloneProp('modelValue');
47
+ this.cloneProp('splitValue');
47
48
 
48
49
  this.makeRef('panel');
49
50
 
50
- let { model, split } = this.data;
51
+ this.compData('virtuals', () => {
52
+ return NCascaderHelper.getCascade(this);
53
+ });
51
54
 
52
- if ( Mix.isEmpty(model) && ! Mix.isEmpty(split) ) {
53
- NCascaderHelper.buildModelFromSplit(this);
54
- }
55
+ this.detectModel();
55
56
 
56
- if ( ! Mix.isEmpty(model) && Mix.isEmpty(split) ) {
57
- NCascaderHelper.buildSplitFromModel(this);
58
- }
57
+ this.watchProp('splitValue', () => {
58
+ Run.frame(() => this.detectModel());
59
+ });
59
60
 
60
- this.compData('virtuals', () => {
61
- return NCascaderHelper.getCascade(this);
61
+ this.watchData('options', () => {
62
+ Run.frame(() => this.detectModel());
62
63
  });
63
64
 
65
+ provide('NCascader', this.instance);
66
+
64
67
  return this;
65
68
  }
66
69
 
70
+ detectModel() : void
71
+ {
72
+ let { model, split } = this.data;
73
+
74
+ if ( ! Mix.isEmpty(model) && Mix.isEmpty(split) ) {
75
+ NCascaderHelper.buildSplitFromModel(this);
76
+ }
77
+
78
+ if ( Mix.isEmpty(model) && ! Mix.isEmpty(split) ) {
79
+ NCascaderHelper.buildModelFromSplit(this);
80
+ }
81
+ }
82
+
67
83
  }
68
84
 
69
85
  export default NCascaderController;
@@ -46,7 +46,7 @@ export class NCascaderView extends NPopoverPanelView
46
46
  Mix.len(items) - data.collapse,
47
47
  ];
48
48
 
49
- if ( ! data.collapseFirst ) {
49
+ if ( ! data.collapseFirst && offset > 0 ) {
50
50
  offset = offset + 1;
51
51
  }
52
52
 
@@ -39,12 +39,15 @@ export class NCascaderPanelController extends GroupController
39
39
  {
40
40
  super.setup();
41
41
 
42
- this
43
- .cloneProp('modelValue')
44
- .cloneProp('splitValue');
42
+ this.makeRef('el');
45
43
 
46
- this
47
- .makeRef('el');
44
+ this.cloneProp('modelValue');
45
+ this.cloneProp('splitValue');
46
+ this.makeData('virtuals', []);
47
+
48
+ this.injectRef([
49
+ 'popover', 'NPopover'
50
+ ]);
48
51
 
49
52
  const { model, split } = this.data;
50
53
 
@@ -56,10 +59,12 @@ export class NCascaderPanelController extends GroupController
56
59
  NCascaderHelper.buildSplitFromModel(this);
57
60
  }
58
61
 
59
- this.compData('virtuals', () => {
60
- return NCascaderHelper.getCascade(this);
62
+ this.watchProp('options', () => {
63
+ this.buildVirtuals();
61
64
  });
62
65
 
66
+ this.buildVirtuals();
67
+
63
68
  this.makeData('visible', ...[
64
69
  Obj.clone(this.data.model)
65
70
  ]);
@@ -67,58 +72,84 @@ export class NCascaderPanelController extends GroupController
67
72
  return this;
68
73
  }
69
74
 
70
- onMouseenter(item : any)
75
+ buildVirtuals()
76
+ {
77
+ this.set('virtuals', ...[
78
+ NCascaderHelper.getCascade(this)
79
+ ]);
80
+ }
81
+
82
+ onMouseenter(item : any, depth : number)
71
83
  {
72
84
  const { data } = this;
73
85
 
74
86
  if ( data.trigger === 'hover' ) {
75
- this.updateVisible(item);
87
+ this.updateVisible(item, depth);
76
88
  }
77
89
  }
78
90
 
79
- onClick(item : any)
91
+ onClick(item : any, depth : number)
80
92
  {
81
93
  const { data } = this;
82
94
 
83
95
  if ( data.trigger === 'click' ) {
84
- this.updateVisible(item);
96
+ this.updateVisible(item, depth);
85
97
  }
86
98
 
87
99
  if ( data.trigger === 'hover' ) {
88
- this.updateCascade(item);
100
+ this.updateCascade(item, depth);
89
101
  }
90
102
  }
91
103
 
92
- onDblclick(item : any)
104
+ onDblclick(item : any, depth : number)
93
105
  {
94
106
  const { data } = this;
95
107
 
96
108
  if ( data.trigger === 'click' ) {
97
- this.updateCascade(item);
109
+ this.updateCascade(item, depth);
98
110
  }
99
111
  }
100
112
 
101
- updateVisible(item : any)
113
+ updateVisible(item : any, depth : number)
102
114
  {
103
- const cascade = NCascaderHelper.getPath(...[
104
- this, item
115
+ const { data } = this;
116
+
117
+ const visible = Arr.slice(...[
118
+ data.visible || [], 0, depth
105
119
  ]);
106
120
 
107
- this.set('visible', cascade);
121
+ this.set('visible', [
122
+ ...visible, item[data.valueProp]
123
+ ]);
124
+
125
+ const virtuals = Arr.slice(...[
126
+ data.virtuals || [], 0, depth
127
+ ]);
128
+
129
+ this.set('virtuals', [
130
+ ...virtuals, item
131
+ ]);
108
132
  }
109
133
 
110
- updateCascade(item : any)
134
+ updateCascade(item : any, depth : number = 0)
111
135
  {
112
- const cascade = NCascaderHelper.getPath(...[
113
- this, item
136
+ const { data } = this;
137
+
138
+ const cascade = Arr.slice(...[
139
+ data.visible || [], 0, depth
114
140
  ]);
115
141
 
116
- const [total, split] = [
117
- cascade, Arr.last(cascade)
142
+ const total = [
143
+ ...cascade, item[data.valueProp]
118
144
  ];
119
145
 
120
- this.update('splitValue', split);
146
+ this.update('splitValue', ...[
147
+ Arr.last(total)
148
+ ]);
149
+
121
150
  this.update('modelValue', total);
151
+
152
+ this.ncx('popover')?.superClose();
122
153
  }
123
154
 
124
155
  }
@@ -23,16 +23,16 @@ export class NCascaderPanelView extends ProtoView
23
23
  class: data.classList
24
24
  };
25
25
 
26
- const slots = Arr.each(data.virtuals, (val : any) => {
27
- return this.items(val[data.childProp] ?? []);
26
+ const slots = Arr.each(data.virtuals, (val : any, index : number) => {
27
+ return this.items(val[data.childProp] ?? [], index + 1);
28
28
  });
29
29
 
30
30
  return h('div', props, [
31
- this.items(data.options), ...slots
31
+ this.items(data.options, 0), ...slots
32
32
  ]);
33
33
  }
34
34
 
35
- items(items : any) : any
35
+ items(items : any, depth : number) : any
36
36
  {
37
37
  const { data } = this.scope;
38
38
 
@@ -46,15 +46,16 @@ export class NCascaderPanelView extends ProtoView
46
46
  };
47
47
 
48
48
  return this.comp('n-virtualbar', props, ({ value }) => {
49
- return this.item(value);
49
+ return this.item(value, depth);
50
50
  });
51
51
  }
52
52
 
53
- item(item : any) : any
53
+ item(item : any, depth : number) : any
54
54
  {
55
55
  const { scope, data } = this.scope;
56
56
 
57
57
  let props : any = {
58
+ clickClose: false,
58
59
  disabled: item[data.disabledProp],
59
60
  };
60
61
 
@@ -83,17 +84,17 @@ export class NCascaderPanelView extends ProtoView
83
84
  }
84
85
 
85
86
  props.onPointerenter = () => {
86
- scope.onMouseenter(item);
87
+ scope.onMouseenter(item, depth);
87
88
  };
88
89
 
89
90
  props.onClick = (e : any) => {
90
91
  e.preventDefault();
91
- scope.onClick(item);
92
+ scope.onClick(item, depth);
92
93
  };
93
94
 
94
95
  props.onDblclick = (e : any) => {
95
96
  e.preventDefault();
96
- scope.onDblclick(item);
97
+ scope.onDblclick(item, depth);
97
98
  };
98
99
 
99
100
  return this.comp('n-popover-option', props, () => [
@@ -11,7 +11,7 @@ export class NCascaderHelper
11
11
  return this;
12
12
  }
13
13
 
14
- scope.set('splitValue', ...[
14
+ scope.update('splitValue', ...[
15
15
  Arr.last(model)
16
16
  ]);
17
17
 
@@ -30,12 +30,8 @@ export class NCascaderHelper
30
30
  return val[valueProp] === split;
31
31
  });
32
32
 
33
- if ( Mix.isEmpty(result) ) {
34
- result = [{ [valueProp]: split }];
35
- }
36
-
37
- scope.set('modelValue', ...[
38
- Arr.extract(result, valueProp)
33
+ scope.update('modelValue', ...[
34
+ Mix.isEmpty(result) ? null : Arr.extract(result, valueProp)
39
35
  ]);
40
36
 
41
37
  return this;
@@ -32,10 +32,6 @@
32
32
  margin-left: size('base-pad', 'calc($ * 1.2)');
33
33
  }
34
34
 
35
- .n-checkbox-group.n-checkbox-group--horizontal .n-checkbox:last-child {
36
- padding-right: 0;
37
- }
38
-
39
35
  .n-checkbox-group.n-checkbox-group--vertical .n-checkbox {
40
36
  min-height: 0;
41
37
  }
@@ -43,7 +39,3 @@
43
39
  .n-checkbox-group.n-checkbox-group--vertical .n-checkbox:not(:first-child) {
44
40
  margin-top: size('base-pad-vertical', 'calc($ * 0.7)');
45
41
  }
46
-
47
- .n-checkbox-group.n-checkbox-group--vertical .n-checkbox:last-child {
48
- padding-bottom: 0;
49
- }
@@ -43,3 +43,9 @@
43
43
  .n-checkbox .n-checkbox__label {
44
44
  padding-left: size('base-pad', 'calc($ * 0.8)');
45
45
  }
46
+
47
+ .n-checkbox.n-checkbox--button {
48
+ padding: size('base-pad-vertical') size('base-pad');
49
+ border: 1px solid transparent;
50
+ border-radius: size('base-rad');
51
+ }
@@ -37,6 +37,13 @@ export const NCheckboxProps = {
37
37
  type: [Boolean], default: false
38
38
  },
39
39
 
40
+ /**
41
+ * @type {PropType<string>}
42
+ */
43
+ view: {
44
+ type: [String], default: 'checkbox'
45
+ },
46
+
40
47
  };
41
48
 
42
49
  export default defineComponent({
@@ -11,7 +11,9 @@ export class NCheckboxData extends ProtoData
11
11
 
12
12
  get classList() : string[]
13
13
  {
14
- let classList = this.classRoot();
14
+ let classList = this.classRoot([
15
+ `${this.scope.view.bem}--${this.view}`
16
+ ]);
15
17
 
16
18
  if ( this.model ) {
17
19
  Arr.append(classList, 'n-checked');
@@ -53,4 +55,9 @@ export class NCheckboxData extends ProtoData
53
55
  return this.scope.get('intermediate');
54
56
  }
55
57
 
58
+ get view() : string
59
+ {
60
+ return this.scope.ncx('group')?.data.view || this.scope.get('view');
61
+ }
62
+
56
63
  }
@@ -17,6 +17,13 @@ export const NCheckboxGroupProps = {
17
17
  type: [Array], default: () => []
18
18
  },
19
19
 
20
+ /**
21
+ * @type {PropType<string>}
22
+ */
23
+ view: {
24
+ type: [String], default: 'checkbox'
25
+ },
26
+
20
27
  };
21
28
 
22
29
  export default defineComponent({
@@ -39,4 +39,9 @@ export class NCheckboxGroupData extends ProtoData
39
39
  return this.scope.get('align');
40
40
  }
41
41
 
42
+ get view() : string
43
+ {
44
+ return this.scope.get('view');
45
+ }
46
+
42
47
  }
@@ -8,7 +8,7 @@
8
8
  flex-direction: row;
9
9
  align-items: center;
10
10
  justify-content: stretch;
11
- height: size('base-hgt', 'calc($ + 10px)');
11
+ height: size('base-hgt', 'calc($ + 11px)');
12
12
  padding: 0 size('base-pad');
13
13
  border-bottom: 1px solid transparent;
14
14
  }
@@ -67,6 +67,11 @@ export default defineComponent({
67
67
  */
68
68
  props: NCollapseItemProps,
69
69
 
70
+ /**
71
+ * @type {boolean}
72
+ */
73
+ inheritAttrs: false,
74
+
70
75
  /**
71
76
  * @type {string[]}
72
77
  */
@@ -76,10 +76,10 @@ export class NCollapseItemView extends ProtoView
76
76
 
77
77
  header_label(collapse : NCollapseController) : any
78
78
  {
79
- const { data } = this.scope;
79
+ const { context, data } = this.scope;
80
80
 
81
81
  return this.div('label', [
82
- data.label
82
+ context.slots.label ? context.slots.label() : data.label
83
83
  ]);
84
84
  }
85
85
 
@@ -119,9 +119,12 @@ export class NCollapseItemView extends ProtoView
119
119
 
120
120
  let props : any = {
121
121
  class: data.classPart('content'),
122
- wrapClass: `${this.bem}__wrap`,
123
122
  };
124
123
 
124
+ if ( data.scrollbar ) {
125
+ props.wrapClass = `${this.bem}__wrap`;
126
+ }
127
+
125
128
  if ( !scope.isVisible() ) {
126
129
  props.style = 'display: none;';
127
130
  }
@@ -46,6 +46,11 @@ export default defineComponent({
46
46
  */
47
47
  props: NConfigProps,
48
48
 
49
+ /**
50
+ * @type {boolean}
51
+ */
52
+ inheritAttrs: false,
53
+
49
54
  /**
50
55
  * @type {string[]}
51
56
  */
@@ -190,11 +190,11 @@ export class NConfigController extends ProtoController
190
190
  ]);
191
191
 
192
192
  if ( value.match(/^!!\$/) ) {
193
- result = Mix.isEmpty(result);
193
+ result = Mix.isTrue(result);
194
194
  }
195
195
 
196
196
  if ( value.match(/^!\$/) ) {
197
- result = Mix.isEmpty(result);
197
+ result = ! Mix.isTrue(result);
198
198
  }
199
199
 
200
200
  return result;
@@ -95,7 +95,7 @@ export class NConfigView extends ProtoView
95
95
 
96
96
  let component : any = alias.replace(/:.*?$/, '');
97
97
 
98
- if ( !Arr.has(['div', 'p', 'span'], component) ) {
98
+ if ( !Arr.has(['div', 'a', 'p', 'span', 'iframe'], component) ) {
99
99
  component = resolveComponent(component);
100
100
  }
101
101
 
@@ -128,6 +128,10 @@ export class NConfigView extends ProtoView
128
128
  render = () => callback.apply(this.scope);
129
129
  }
130
130
 
131
+ if ( Mix.isArr(callback) && callback.length === 1 ) {
132
+ callback = callback[0];
133
+ }
134
+
131
135
  if ( Mix.isStr(callback) ) {
132
136
  render = () => this.scope.getString(callback);
133
137
  }
@@ -1,7 +1,11 @@
1
1
  @use "../../root/css/helpers" as *;
2
2
 
3
- .n-drag-indicator,
4
- .n-draggable__indicator {
3
+ body:not(.n-drag) .n-drag-counter,
4
+ body:not(.n-drag) .n-drag-indicator {
5
+ display: none !important;
6
+ }
7
+
8
+ .n-drag-indicator {
5
9
  pointer-events: none;
6
10
  z-index: 9999998;
7
11
  position: absolute;
@@ -31,7 +35,7 @@
31
35
  }
32
36
 
33
37
  .n-drag-indicator:not(.n-view-grid).n-mode-before:before {
34
- top: 2px;
38
+ top: -1px;
35
39
  left: 2px;
36
40
  right: 2px;
37
41
  height: 2px;
@@ -40,12 +44,12 @@
40
44
  .n-drag-indicator.n-view-grid.n-mode-before:before {
41
45
  top: 2px;
42
46
  bottom: 2px;
43
- left: 2px;
47
+ left: -1px;
44
48
  width: 2px;
45
49
  }
46
50
 
47
51
  .n-drag-indicator:not(.n-view-grid).n-mode-after:before {
48
- bottom: 2px;
52
+ bottom: -1px;
49
53
  left: 2px;
50
54
  right: 2px;
51
55
  height: 2px;
@@ -54,12 +58,11 @@
54
58
  .n-drag-indicator.n-view-grid.n-mode-after:before {
55
59
  top: 2px;
56
60
  bottom: 2px;
57
- right: 2px;
61
+ right: -1px;
58
62
  width: 2px;
59
63
  }
60
64
 
61
- .n-drag-counter,
62
- .n-draggable__counter {
65
+ .n-drag-counter {
63
66
  cursor: none;
64
67
  pointer-events: none;
65
68
  will-change: transform;
@@ -91,6 +91,10 @@ export class NDragIndicator
91
91
 
92
92
  let boundry = target.el.offsetParent;
93
93
 
94
+ if ( boundry?.matches('.n-virtualbar__item') ) {
95
+ boundry = boundry.offsetParent;
96
+ }
97
+
94
98
  if ( boundry == null ) {
95
99
  boundry = document.body;
96
100
  }
@@ -95,7 +95,7 @@ export class NDragReciever
95
95
  NDragHandler.dragstart(e, config);
96
96
  }
97
97
 
98
- getMode(event : any, el : HTMLElement, safezone : Function | number = 0.5)
98
+ getMode(event : any, el : HTMLElement, safezone : Function | number = 0.5, args : any[] = [])
99
99
  {
100
100
  let [fn, mode] = [safezone, 'inside'];
101
101
 
@@ -114,7 +114,7 @@ export class NDragReciever
114
114
  grid ? event.clientX : event.clientY,
115
115
  ];
116
116
 
117
- const padding = fn(size);
117
+ const padding = fn(size, ...args);
118
118
 
119
119
  if ( scale < offset + padding ) {
120
120
  mode = 'before';
@@ -7,6 +7,8 @@ export const NDraglistProps = {
7
7
  ...Props.Size,
8
8
  ...Props.Type,
9
9
  ...Props.Draglist,
10
+ ...Props.EmptyText,
11
+ ...Props.EmptyPropsStacked,
10
12
 
11
13
  /**
12
14
  * @type {PropType<boolean>}
@@ -62,11 +64,15 @@ export default defineComponent({
62
64
  */
63
65
  emits: [
64
66
  'update:items',
67
+ 'update:cascade',
65
68
  'update:current',
66
69
  'update:selected',
67
70
  'update:expanded',
71
+ 'move',
68
72
  'row-click',
73
+ 'node-click',
69
74
  'row-dblclick',
75
+ 'node-dblclick',
70
76
  ],
71
77
 
72
78
  setup(props, context)