@naptics/vue-collection 0.1.4 → 0.1.5

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.
@@ -97,9 +97,6 @@ export declare const nCrudModalProps: {
97
97
  readonly modal: PropType<(props: import("./NModal").ModalSlotProps) => JSX.Element>;
98
98
  readonly header: PropType<() => JSX.Element>;
99
99
  readonly footer: PropType<(props: import("./NModal").ModalSlotProps) => JSX.Element>;
100
- /**
101
- * The color of the remove-button.
102
- */
103
100
  readonly value: PropType<boolean>;
104
101
  readonly onUpdateValue: PropType<(newValue: boolean) => void>;
105
102
  };
@@ -205,9 +202,6 @@ declare const _default: import("vue").DefineComponent<{
205
202
  readonly modal: PropType<(props: import("./NModal").ModalSlotProps) => JSX.Element>;
206
203
  readonly header: PropType<() => JSX.Element>;
207
204
  readonly footer: PropType<(props: import("./NModal").ModalSlotProps) => JSX.Element>;
208
- /**
209
- * The color of the remove-button.
210
- */
211
205
  readonly value: PropType<boolean>;
212
206
  readonly onUpdateValue: PropType<(newValue: boolean) => void>;
213
207
  }, import("vue").RenderFunction, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, never[], never, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
@@ -307,9 +301,6 @@ declare const _default: import("vue").DefineComponent<{
307
301
  readonly modal: PropType<(props: import("./NModal").ModalSlotProps) => JSX.Element>;
308
302
  readonly header: PropType<() => JSX.Element>;
309
303
  readonly footer: PropType<(props: import("./NModal").ModalSlotProps) => JSX.Element>;
310
- /**
311
- * The color of the remove-button.
312
- */
313
304
  readonly value: PropType<boolean>;
314
305
  readonly onUpdateValue: PropType<(newValue: boolean) => void>;
315
306
  }>> & {}, {
@@ -1,6 +1,6 @@
1
1
  import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
2
2
  import { trsl } from '../i18n';
3
- import { createComponent } from '../utils/component';
3
+ import { createComponentWithSlots } from '../utils/component';
4
4
  import { ref } from 'vue';
5
5
  import NButton from './NButton';
6
6
  import NDialog from './NDialog';
@@ -69,7 +69,7 @@ export const nCrudModalProps = {
69
69
  * It has an integrated remove-button with a user-dialog to remove the editing element.
70
70
  * When the dialog is accepted `onRemove` is called.
71
71
  */
72
- export default createComponent('NCrudModal', nCrudModalProps, (props, {
72
+ export default createComponentWithSlots('NCrudModal', nCrudModalProps, ['modal', 'footer', 'header'], (props, {
73
73
  slots
74
74
  }) => {
75
75
  const removeDialog = ref();
@@ -1,5 +1,5 @@
1
1
  import { isVNode as _isVNode, createVNode as _createVNode } from "vue";
2
- import { createComponent } from '../utils/component';
2
+ import { createComponentWithSlots } from '../utils/component';
3
3
  import { computed, Transition } from 'vue';
4
4
  import { RouterLink } from 'vue-router';
5
5
  import { Menu, MenuButton, MenuItem, MenuItems } from '@headlessui/vue';
@@ -42,7 +42,7 @@ export const nDropdownProps = {
42
42
  * The `NDropdown` consists of a button and a panel with multiple actions.
43
43
  * It is useful to group multiple actions together in one place.
44
44
  */
45
- export default createComponent('NDropdown', nDropdownProps, (props, {
45
+ export default createComponentWithSlots('NDropdown', nDropdownProps, ['button'], (props, {
46
46
  slots
47
47
  }) => {
48
48
  const items = computed(() => {
@@ -1,5 +1,5 @@
1
1
  import { createVNode as _createVNode } from "vue";
2
- import { createComponent } from '../utils/component';
2
+ import { createComponentWithSlots } from '../utils/component';
3
3
  import { reactive, toRefs } from 'vue';
4
4
  import NForm from './NForm';
5
5
  import NModal, { nModalProps } from './NModal';
@@ -31,7 +31,7 @@ export const nFormModalProps = {
31
31
  * When submitting a `NFormModal` the form is first validated and
32
32
  * only if the validation is succesful the `onOk` event is called.
33
33
  */
34
- export default createComponent('NFormModal', nFormModalProps, (props, {
34
+ export default createComponentWithSlots('NFormModal', nFormModalProps, ['modal', 'header', 'footer'], (props, {
35
35
  slots
36
36
  }) => {
37
37
  const childProps = reactive({
@@ -22,10 +22,6 @@ export declare const nInputSuggestionProps: {
22
22
  readonly input: PropType<(props: import("./NValInput").InputSlotProps) => JSX.Element>;
23
23
  readonly optional: BooleanConstructor;
24
24
  readonly rules: {
25
- /**
26
- * `NInputSuggestion` is an input, which shows a list of possible suggestions to the user
27
- * which is filtered while typing. Contrary to {@link NInputSelect} the user is not required to choose any of the suggestions.
28
- */
29
25
  readonly type: PropType<import("../utils/validation").ValidationRule | import("../utils/validation").ValidationRule[]>;
30
26
  readonly default: () => never[];
31
27
  };
@@ -97,10 +93,6 @@ declare const _default: import("vue").DefineComponent<{
97
93
  readonly input: PropType<(props: import("./NValInput").InputSlotProps) => JSX.Element>;
98
94
  readonly optional: BooleanConstructor;
99
95
  readonly rules: {
100
- /**
101
- * `NInputSuggestion` is an input, which shows a list of possible suggestions to the user
102
- * which is filtered while typing. Contrary to {@link NInputSelect} the user is not required to choose any of the suggestions.
103
- */
104
96
  readonly type: PropType<import("../utils/validation").ValidationRule | import("../utils/validation").ValidationRule[]>;
105
97
  readonly default: () => never[];
106
98
  };
@@ -167,10 +159,6 @@ declare const _default: import("vue").DefineComponent<{
167
159
  readonly input: PropType<(props: import("./NValInput").InputSlotProps) => JSX.Element>;
168
160
  readonly optional: BooleanConstructor;
169
161
  readonly rules: {
170
- /**
171
- * `NInputSuggestion` is an input, which shows a list of possible suggestions to the user
172
- * which is filtered while typing. Contrary to {@link NInputSelect} the user is not required to choose any of the suggestions.
173
- */
174
162
  readonly type: PropType<import("../utils/validation").ValidationRule | import("../utils/validation").ValidationRule[]>;
175
163
  readonly default: () => never[];
176
164
  };
@@ -1,5 +1,5 @@
1
1
  import { createTextVNode as _createTextVNode, createVNode as _createVNode } from "vue";
2
- import { createComponent } from '../utils/component';
2
+ import { createComponentWithSlots } from '../utils/component';
3
3
  import { Dialog, DialogOverlay, DialogTitle, TransitionRoot, TransitionChild } from '@headlessui/vue';
4
4
  import NButton from './NButton';
5
5
  import NIconButton from './NIconButton';
@@ -112,7 +112,7 @@ export const nModalProps = {
112
112
  * The `NModal` is the base component for all modals and dialogs.
113
113
  * It provides the core mechanics to display a window in front of everything else.
114
114
  */
115
- export default createComponent('NModal', nModalProps, (props, {
115
+ export default createComponentWithSlots('NModal', nModalProps, ['modal', 'header', 'footer'], (props, {
116
116
  slots
117
117
  }) => {
118
118
  const ok = () => {
@@ -18,10 +18,10 @@ export declare const nSearchbarListProps: {
18
18
  readonly onUpdateValue: import("vue").PropType<(newValue: string) => void>;
19
19
  readonly items: {
20
20
  readonly type: import("vue").PropType<import("./NSuggestionList").SuggestionItem[]>;
21
- readonly default: () => never[];
22
- }; /**
23
- * Adds the classes directly to the input (e.g. for shadow).
24
- */
21
+ readonly default: () => never[]; /**
22
+ * Adds the classes directly to the input (e.g. for shadow).
23
+ */
24
+ };
25
25
  readonly maxItems: {
26
26
  readonly type: NumberConstructor;
27
27
  readonly default: () => number;
@@ -55,10 +55,10 @@ declare const _default: import("vue").DefineComponent<{
55
55
  readonly onUpdateValue: import("vue").PropType<(newValue: string) => void>;
56
56
  readonly items: {
57
57
  readonly type: import("vue").PropType<import("./NSuggestionList").SuggestionItem[]>;
58
- readonly default: () => never[];
59
- }; /**
60
- * Adds the classes directly to the input (e.g. for shadow).
61
- */
58
+ readonly default: () => never[]; /**
59
+ * Adds the classes directly to the input (e.g. for shadow).
60
+ */
61
+ };
62
62
  readonly maxItems: {
63
63
  readonly type: NumberConstructor;
64
64
  readonly default: () => number;
@@ -88,10 +88,10 @@ declare const _default: import("vue").DefineComponent<{
88
88
  readonly onUpdateValue: import("vue").PropType<(newValue: string) => void>;
89
89
  readonly items: {
90
90
  readonly type: import("vue").PropType<import("./NSuggestionList").SuggestionItem[]>;
91
- readonly default: () => never[];
92
- }; /**
93
- * Adds the classes directly to the input (e.g. for shadow).
94
- */
91
+ readonly default: () => never[]; /**
92
+ * Adds the classes directly to the input (e.g. for shadow).
93
+ */
94
+ };
95
95
  readonly maxItems: {
96
96
  readonly type: NumberConstructor;
97
97
  readonly default: () => number;
@@ -1,6 +1,6 @@
1
1
  import { createTextVNode as _createTextVNode, createVNode as _createVNode } from "vue";
2
2
  import { trsl } from '../i18n';
3
- import { createComponent } from '../utils/component';
3
+ import { createComponentWithSlots } from '../utils/component';
4
4
  import { computed, ref } from 'vue';
5
5
  import NLoadingIndicator from './NLoadingIndicator';
6
6
  export const nSuggestionListPropsForConfig = {
@@ -72,7 +72,7 @@ export const nSuggestionListProps = {
72
72
  /**
73
73
  * The `NSuggestionList` can be added to an input and adds a list below it which is shown when the input is focused.
74
74
  */
75
- export default createComponent('NSuggestionList', nSuggestionListProps, props => {
75
+ export default createComponentWithSlots('NSuggestionList', nSuggestionListProps, ['input', 'listItem'], props => {
76
76
  const selectedIndex = ref(null);
77
77
  const displayItems = computed(() => props.items.slice(0, props.maxItems));
78
78
  const isInFocus = ref(false);
@@ -1,5 +1,5 @@
1
1
  import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
2
- import { createComponent } from '../utils/component';
2
+ import { createComponentWithSlots } from '../utils/component';
3
3
  import { computed } from 'vue';
4
4
  import { ref, reactive, watch } from 'vue';
5
5
  import NInput, { nInputProps } from './NInput';
@@ -53,7 +53,7 @@ export const nValInputProps = {
53
53
  /**
54
54
  * The `NValInput` is a `NInput` with custom validation.
55
55
  */
56
- export default createComponent('NValInput', nValInputProps, (props, context) => {
56
+ export default createComponentWithSlots('NValInput', nValInputProps, ['input'], (props, context) => {
57
57
  const rules = computed(() => {
58
58
  const otherRules = Array.isArray(props.rules) ? props.rules : [props.rules];
59
59
  return props.optional ? otherRules : [required, ...otherRules];
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@naptics/vue-collection",
3
3
  "author": "Timo Siegenthaler",
4
4
  "description": "Vue Collection is a collection of styled and fully functional Vue components which can easily be integrated into our projects.",
5
- "version": "0.1.4",
5
+ "version": "0.1.5",
6
6
  "main": "./index.js",
7
7
  "repository": {
8
8
  "type": "git",
@@ -62,11 +62,11 @@ export function extractProps(props, ...keys) {
62
62
  for (const key of keys) partial[key] = toRef(props, key);
63
63
  return reactive(partial);
64
64
  }
65
+ // operates on same reference of props to not break reactivity
65
66
  function createSlotProps(props, slots, ...keys) {
66
- const newProps = {
67
- ...props
68
- };
67
+ const newProps = props;
69
68
  keys.forEach(key => {
69
+ // if a slot is set once, it is basically always set. The changing content is not a problem.
70
70
  const slot = slots[key];
71
71
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
72
72
  if (slot) newProps[key] = (...args) => _createVNode(_Fragment, null, [slot?.(...args)]);