@nmorph/nmorph-ui-kit 2.2.10 → 2.2.13

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 (75) hide show
  1. package/README.md +11 -7
  2. package/dist/components/basic/nmorph-icon/NmorphIcon.css +1 -1
  3. package/dist/components/basic/nmorph-icon/NmorphIcon.vue2.js +11 -11
  4. package/dist/components/data/nmorph-avatar/NmorphAvatar.css +1 -0
  5. package/dist/components/data/nmorph-avatar/NmorphAvatar.vue.js +74 -46
  6. package/dist/components/data/nmorph-avatar/NmorphAvatar.vue2.js +26 -21
  7. package/dist/components/data/nmorph-carousel/NmorphCarousel.vue2.js +4 -4
  8. package/dist/components/data/nmorph-image-preview/NmorphImagePreview.vue.js +77 -38
  9. package/dist/components/data/nmorph-image-preview/NmorphImagePreview.vue2.js +31 -30
  10. package/dist/components/data/nmorph-pagination/NmorphPagination.css +1 -1
  11. package/dist/components/data/nmorph-pagination/NmorphPagination.vue.js +36 -30
  12. package/dist/components/data/nmorph-pagination/NmorphPagination.vue2.js +48 -41
  13. package/dist/components/data/nmorph-table/NmorphTable.css +1 -1
  14. package/dist/components/data/nmorph-table/NmorphTable.vue.js +228 -103
  15. package/dist/components/data/nmorph-table/NmorphTable.vue2.js +49 -30
  16. package/dist/components/form/nmorph-autocomplete/NmorphAutocomplete.css +1 -1
  17. package/dist/components/form/nmorph-autocomplete/NmorphAutocomplete.vue.js +91 -35
  18. package/dist/components/form/nmorph-autocomplete/NmorphAutocomplete.vue2.js +48 -35
  19. package/dist/components/form/nmorph-checkbox/NmorphCheckbox.css +1 -1
  20. package/dist/components/form/nmorph-checkbox/NmorphCheckbox.vue.js +15 -13
  21. package/dist/components/form/nmorph-checkbox/NmorphCheckbox.vue2.js +8 -8
  22. package/dist/components/form/nmorph-checkbox-group/NmorphCheckboxGroup.vue2.js +22 -14
  23. package/dist/components/form/nmorph-color-picker/NmorphColorPicker.vue2.js +11 -10
  24. package/dist/components/form/nmorph-radio/NmorphRadio.css +1 -1
  25. package/dist/components/form/nmorph-radio/NmorphRadio.vue.js +22 -20
  26. package/dist/components/form/nmorph-radio/NmorphRadio.vue2.js +7 -7
  27. package/dist/components/form/nmorph-radio-group/NmorphRadioGroup.vue2.js +14 -14
  28. package/dist/components/form/nmorph-select/NmorphSelect.css +1 -1
  29. package/dist/components/form/nmorph-select/NmorphSelect.vue.js +115 -58
  30. package/dist/components/form/nmorph-select/NmorphSelect.vue2.js +104 -75
  31. package/dist/components/form/nmorph-select/components/nmorph-select-option/NmorphSelectOption.vue2.js +12 -10
  32. package/dist/components/navigation/nmorph-backtop/NmorphBacktop.vue.js +7 -7
  33. package/dist/components/navigation/nmorph-dropdown/NmorphDropdown.vue.js +29 -42
  34. package/dist/components/navigation/nmorph-dropdown/NmorphDropdown.vue2.js +39 -20
  35. package/dist/components/others/nmorph-overlay/NmorphOverlay.vue.js +29 -24
  36. package/dist/components/others/nmorph-overlay/NmorphOverlay.vue2.js +17 -15
  37. package/dist/hooks/use-common-styles.js +23 -20
  38. package/dist/hooks/use-placement.js +76 -44
  39. package/dist/hooks/use-virtual-list.js +46 -0
  40. package/dist/index.es.js +698 -694
  41. package/dist/index.umd.js +46 -38
  42. package/dist/nuxt.mjs +21 -8
  43. package/dist/outside-hooks/use-nmorph-browser.js +9 -9
  44. package/dist/outside-hooks/use-nmorph-theme.js +133 -87
  45. package/dist/package.json.js +1 -1
  46. package/dist/plugin.js +34 -29
  47. package/dist/src/components/data/nmorph-badge/NmorphBadge.vue.d.ts +1 -1
  48. package/dist/src/components/data/nmorph-image/NmorphImage.vue.d.ts +3 -3
  49. package/dist/src/components/data/nmorph-image-preview/NmorphImagePreview.vue.d.ts +14 -2
  50. package/dist/src/components/data/nmorph-pagination/NmorphPagination.vue.d.ts +3 -0
  51. package/dist/src/components/data/nmorph-table/NmorphTable.vue.d.ts +9 -0
  52. package/dist/src/components/data/nmorph-table/types.d.ts +2 -2
  53. package/dist/src/components/feedback/nmorph-tooltip/NmorphTooltip.vue.d.ts +1 -1
  54. package/dist/src/components/form/nmorph-autocomplete/NmorphAutocomplete.vue.d.ts +11 -0
  55. package/dist/src/components/form/nmorph-checkbox/NmorphCheckbox.vue.d.ts +1 -0
  56. package/dist/src/components/form/nmorph-checkbox-group/NmorphCheckboxGroup.vue.d.ts +4 -3
  57. package/dist/src/components/form/nmorph-radio/NmorphRadio.vue.d.ts +1 -0
  58. package/dist/src/components/form/nmorph-radio-group/NmorphRadioGroup.vue.d.ts +4 -3
  59. package/dist/src/components/form/nmorph-select/NmorphSelect.vue.d.ts +8 -0
  60. package/dist/src/components/form/nmorph-select/components/nmorph-select-option/NmorphSelectOption.vue.d.ts +1 -0
  61. package/dist/src/components/form/nmorph-select/types.d.ts +1 -0
  62. package/dist/src/components/navigation/nmorph-dropdown/NmorphDropdown.vue.d.ts +3 -1
  63. package/dist/src/components/others/nmorph-overlay/NmorphOverlay.vue.d.ts +4 -0
  64. package/dist/src/components/providers/nmorph-notification-provider/NmorphNotificationProvider.vue.d.ts +1 -1
  65. package/dist/src/hooks/index.d.ts +1 -0
  66. package/dist/src/hooks/use-common-styles.d.ts +1 -0
  67. package/dist/src/hooks/use-placement.d.ts +8 -4
  68. package/dist/src/hooks/use-virtual-list.d.ts +21 -0
  69. package/dist/src/outside-hooks/use-nmorph-notification.d.ts +2 -2
  70. package/dist/src/outside-hooks/use-nmorph-theme.d.ts +1 -0
  71. package/dist/src/plugin.d.ts +2 -0
  72. package/dist/src/types/index.d.ts +12 -3
  73. package/dist/style.css +1 -1
  74. package/dist/types/index.js +14 -8
  75. package/package.json +1 -1
@@ -1,31 +1,31 @@
1
1
  import './NmorphAutocomplete.css';
2
- import m from "./NmorphAutocomplete.vue2.js";
3
- import { openBlock as o, createElementBlock as l, normalizeClass as p, createElementVNode as n, createVNode as t, createBlock as s, withCtx as c, renderSlot as d, Fragment as h, renderList as _, createTextVNode as f, toDisplayString as u, createCommentVNode as v } from "vue";
2
+ import v from "./NmorphAutocomplete.vue2.js";
3
+ import { openBlock as l, createElementBlock as t, normalizeClass as f, createElementVNode as r, createVNode as i, createBlock as k, withCtx as d, renderSlot as n, normalizeStyle as c, Fragment as p, renderList as s, createTextVNode as h, toDisplayString as _, createCommentVNode as y } from "vue";
4
4
  /* empty css */
5
- import k from "../../../_virtual/_plugin-vue_export-helper.js";
6
- const N = { class: "nmorph-autocomplete__input-content" }, b = {
5
+ import g from "../../../_virtual/_plugin-vue_export-helper.js";
6
+ const x = { class: "nmorph-autocomplete__input-content" }, H = {
7
7
  ref: "nmorphAutocompleteDOMRef",
8
8
  class: "nmorph-autocomplete__input"
9
- }, g = {
9
+ }, N = {
10
10
  key: 0,
11
11
  class: "nmorph-autocomplete__loading"
12
- }, x = {
13
- key: 1,
12
+ }, b = ["onClick"], C = {
13
+ key: 2,
14
14
  class: "nmorph-autocomplete__list"
15
- }, y = ["onClick"];
16
- function V(a, C, z, e, A, D) {
17
- return o(), l(
15
+ }, S = ["onClick"];
16
+ function V(a, m, z, e, L, A) {
17
+ return l(), t(
18
18
  "div",
19
19
  {
20
- class: p(e.modifiers)
20
+ class: f(e.modifiers)
21
21
  },
22
22
  [
23
- n("div", N, [
24
- n(
23
+ r("div", x, [
24
+ r(
25
25
  "div",
26
- b,
26
+ H,
27
27
  [
28
- t(e.NmorphTextInput, {
28
+ i(e.NmorphTextInput, {
29
29
  id: e.props.id,
30
30
  name: e.props.name,
31
31
  autocomplete: e.props.autocomplete,
@@ -42,7 +42,7 @@ function V(a, C, z, e, A, D) {
42
42
  /* NEED_PATCH */
43
43
  )
44
44
  ]),
45
- e.nmorphAutocompleteDOMRef ? (o(), s(e.NmorphDropdown, {
45
+ e.nmorphAutocompleteDOMRef ? (l(), k(e.NmorphDropdown, {
46
46
  key: 0,
47
47
  open: e.open,
48
48
  "relative-element": e.nmorphAutocompleteDOMRef,
@@ -50,34 +50,90 @@ function V(a, C, z, e, A, D) {
50
50
  "z-index": e.props.zIndex,
51
51
  onOnOutsideClick: e.closeHandler
52
52
  }, {
53
- default: c(() => [
54
- e.loader ? (o(), l("div", g, [
55
- d(a.$slots, "loader", {}, () => [
56
- t(e.NmorphIcon, { size: "large" }, {
57
- default: c(() => [
58
- t(e.NmorphIconLoader)
53
+ default: d(() => [
54
+ e.loader ? (l(), t("div", N, [
55
+ n(a.$slots, "loader", {}, () => [
56
+ i(e.NmorphIcon, { size: "large" }, {
57
+ default: d(() => [
58
+ i(e.NmorphIconLoader)
59
59
  ]),
60
60
  _: 1
61
61
  /* STABLE */
62
62
  })
63
63
  ])
64
- ])) : (o(), l("div", x, [
65
- (o(!0), l(
66
- h,
64
+ ])) : e.virtualEnabled ? (l(), t(
65
+ "div",
66
+ {
67
+ key: 1,
68
+ ref: e.virtualList.containerRef,
69
+ class: "nmorph-autocomplete__list nmorph-autocomplete__list--virtual",
70
+ style: c({ "--autocomplete-virtual-item-height": `${e.virtualItemHeight}px`, maxHeight: e.virtualMaxHeight }),
71
+ onScroll: m[0] || (m[0] = (...o) => e.virtualList.scrollHandler && e.virtualList.scrollHandler(...o))
72
+ },
73
+ [
74
+ r(
75
+ "div",
76
+ {
77
+ class: "nmorph-autocomplete__virtual-spacer",
78
+ style: c(e.virtualSpacerStyle)
79
+ },
80
+ [
81
+ r(
82
+ "div",
83
+ {
84
+ class: "nmorph-autocomplete__virtual-content",
85
+ style: c(e.virtualContentStyle)
86
+ },
87
+ [
88
+ (l(!0), t(
89
+ p,
90
+ null,
91
+ s(e.virtualItems, (o) => (l(), t("div", {
92
+ key: o.index,
93
+ class: "nmorph-autocomplete__list-item",
94
+ onClick: () => e.clickHandler(o.item)
95
+ }, [
96
+ n(a.$slots, "default", {
97
+ scope: o.item
98
+ }, () => [
99
+ h(
100
+ _(o.item.value),
101
+ 1
102
+ /* TEXT */
103
+ )
104
+ ])
105
+ ], 8, b))),
106
+ 128
107
+ /* KEYED_FRAGMENT */
108
+ ))
109
+ ],
110
+ 4
111
+ /* STYLE */
112
+ )
113
+ ],
114
+ 4
115
+ /* STYLE */
116
+ )
117
+ ],
118
+ 36
119
+ /* STYLE, NEED_HYDRATION */
120
+ )) : (l(), t("div", C, [
121
+ (l(!0), t(
122
+ p,
67
123
  null,
68
- _(e.filteredList, (r, i) => (o(), l("div", {
69
- key: i,
124
+ s(e.filteredList, (o, u) => (l(), t("div", {
125
+ key: u,
70
126
  class: "nmorph-autocomplete__list-item",
71
- onClick: () => e.clickHandler(r)
127
+ onClick: () => e.clickHandler(o)
72
128
  }, [
73
- d(a.$slots, "default", { scope: r }, () => [
74
- f(
75
- u(r.value),
129
+ n(a.$slots, "default", { scope: o }, () => [
130
+ h(
131
+ _(o.value),
76
132
  1
77
133
  /* TEXT */
78
134
  )
79
135
  ])
80
- ], 8, y))),
136
+ ], 8, S))),
81
137
  128
82
138
  /* KEYED_FRAGMENT */
83
139
  ))
@@ -85,13 +141,13 @@ function V(a, C, z, e, A, D) {
85
141
  ]),
86
142
  _: 3
87
143
  /* FORWARDED */
88
- }, 8, ["open", "relative-element", "z-index"])) : v("v-if", !0)
144
+ }, 8, ["open", "relative-element", "z-index"])) : y("v-if", !0)
89
145
  ],
90
146
  2
91
147
  /* CLASS */
92
148
  );
93
149
  }
94
- const L = /* @__PURE__ */ k(m, [["render", V], ["__file", "/builds/ketjo/nmorph/library/src/components/form/nmorph-autocomplete/NmorphAutocomplete.vue"]]);
150
+ const B = /* @__PURE__ */ g(v, [["render", V], ["__file", "/builds/ketjo/nmorph/library/src/components/form/nmorph-autocomplete/NmorphAutocomplete.vue"]]);
95
151
  export {
96
- L as default
152
+ B as default
97
153
  };
@@ -1,11 +1,12 @@
1
1
  import './NmorphAutocomplete.css';
2
- import { defineComponent as N, ref as a, computed as p, watch as i } from "vue";
3
- import { useModifiers as _ } from "../../../utils/create-modifiers.js";
4
- import S from "../../../assets/icons/loader.svg.js";
5
- import I from "../nmorph-text-input/NmorphTextInput.vue.js";
6
- import w from "../../navigation/nmorph-dropdown/NmorphDropdown.vue.js";
7
- import x from "../../basic/nmorph-icon/NmorphIcon.vue.js";
8
- const D = /* @__PURE__ */ N({
2
+ import { defineComponent as k, ref as n, computed as r, watch as p, nextTick as O } from "vue";
3
+ import { useModifiers as T } from "../../../utils/create-modifiers.js";
4
+ import { useVirtualList as M } from "../../../hooks/use-virtual-list.js";
5
+ import V from "../nmorph-text-input/NmorphTextInput.vue.js";
6
+ import A from "../../navigation/nmorph-dropdown/NmorphDropdown.vue.js";
7
+ import B from "../../basic/nmorph-icon/NmorphIcon.vue.js";
8
+ import D from "../../../assets/icons/loader.svg.js";
9
+ const E = /* @__PURE__ */ k({
9
10
  __name: "NmorphAutocomplete",
10
11
  props: {
11
12
  modelValue: { type: String, required: !1, default: "" },
@@ -14,6 +15,10 @@ const D = /* @__PURE__ */ N({
14
15
  list: { type: Array, required: !0, default: () => [] },
15
16
  actionCallback: { type: Function, required: !1, default: void 0 },
16
17
  zIndex: { type: Number, required: !1 },
18
+ virtual: { type: Boolean, required: !1, default: !1 },
19
+ virtualItemHeight: { type: Number, required: !1, default: 34 },
20
+ virtualMaxHeight: { type: [Number, String], required: !1, default: 240 },
21
+ virtualOverscan: { type: Number, required: !1, default: 5 },
17
22
  id: { type: String, required: !1 },
18
23
  name: { type: String, required: !1 },
19
24
  autocomplete: { type: String, required: !1 },
@@ -22,44 +27,52 @@ const D = /* @__PURE__ */ N({
22
27
  tabindex: { type: Number, required: !1 }
23
28
  },
24
29
  emits: ["update:model-value", "select"],
25
- setup(d, { expose: c, emit: m }) {
26
- c();
27
- const o = d, t = a(o.modelValue), u = m, f = p(
28
- () => _({
30
+ setup(h, { expose: g, emit: y }) {
31
+ g();
32
+ const t = h, a = n(t.modelValue), s = y, b = r(
33
+ () => T({
29
34
  "nmorph-autocomplete": []
30
35
  })
31
- ), h = (e) => {
32
- t.value = e, u("update:model-value", t.value);
33
- }, r = a(!1), v = a(null), y = () => {
34
- r.value = !1;
35
- }, n = p(() => o.list.filter((e) => Object.keys(e).some((q) => String(e[q]).toLowerCase().includes(t.value.toLowerCase()))));
36
- i(n, (e) => {
37
- r.value = e.length > 0;
36
+ ), q = (e) => {
37
+ a.value = e, s("update:model-value", a.value);
38
+ }, l = n(!1), x = n(null), N = () => {
39
+ l.value = !1;
40
+ }, u = r(() => t.list.filter((e) => Object.keys(e).some((L) => String(e[L]).toLowerCase().includes(a.value.toLowerCase())))), c = r(() => t.virtual && u.value.length > 0), d = r(() => t.virtualItemHeight), f = r(() => t.virtualOverscan), o = M(u, {
41
+ enabled: c,
42
+ itemHeight: d,
43
+ overscan: f
44
+ }), I = r(() => o.virtualItems.value), S = r(() => ({
45
+ height: `${o.totalHeight.value}px`
46
+ })), H = r(() => ({
47
+ transform: `translateY(${o.offsetTop.value}px)`
48
+ })), m = (e) => typeof e == "number" ? `${e}px` : e, _ = r(() => m(t.virtualMaxHeight));
49
+ p(u, async (e) => {
50
+ l.value = e.length > 0, await O(), o.scrollToIndex(0), o.refresh();
38
51
  });
39
- const g = (e) => {
40
- u("select", e), t.value = e.value, setTimeout(() => {
41
- r.value = !1;
52
+ const C = (e) => {
53
+ s("select", e), a.value = e.value, setTimeout(() => {
54
+ l.value = !1;
42
55
  });
43
- }, b = () => {
44
- r.value = n.value.length > 0;
45
- }, l = a(!1);
46
- i(t, async (e) => {
47
- e !== "" && o.actionCallback && (l.value = !0, await o.actionCallback(), l.value = !1);
48
- }), i(l, (e) => {
49
- e && (r.value = !0);
56
+ }, w = () => {
57
+ l.value = u.value.length > 0;
58
+ }, i = n(!1);
59
+ p(a, async (e) => {
60
+ e !== "" && t.actionCallback && (i.value = !0, await t.actionCallback(), i.value = !1);
61
+ }), p(i, (e) => {
62
+ e && (l.value = !0);
50
63
  });
51
- const s = { props: o, initialValue: t, emit: u, modifiers: f, updateValueHandler: h, open: r, nmorphAutocompleteDOMRef: v, closeHandler: y, filteredList: n, clickHandler: g, focusHandler: b, loader: l, get NmorphIcon() {
52
- return x;
64
+ const v = { props: t, initialValue: a, emit: s, modifiers: b, updateValueHandler: q, open: l, nmorphAutocompleteDOMRef: x, closeHandler: N, filteredList: u, virtualEnabled: c, virtualItemHeight: d, virtualOverscan: f, virtualList: o, virtualItems: I, virtualSpacerStyle: S, virtualContentStyle: H, getCssSize: m, virtualMaxHeight: _, clickHandler: C, focusHandler: w, loader: i, get NmorphIcon() {
65
+ return B;
53
66
  }, get NmorphDropdown() {
54
- return w;
67
+ return A;
55
68
  }, get NmorphTextInput() {
56
- return I;
69
+ return V;
57
70
  }, get NmorphIconLoader() {
58
- return S;
71
+ return D;
59
72
  } };
60
- return Object.defineProperty(s, "__isScriptSetup", { enumerable: !1, value: !0 }), s;
73
+ return Object.defineProperty(v, "__isScriptSetup", { enumerable: !1, value: !0 }), v;
61
74
  }
62
75
  });
63
76
  export {
64
- D as default
77
+ E as default
65
78
  };
@@ -1 +1 @@
1
- .nmorph-checkbox{--size: var(--height);display:inline-flex;align-items:center;cursor:pointer}.nmorph-checkbox .nmorph-checkbox__content{position:relative;display:flex;align-items:center;justify-content:center}.nmorph-checkbox .nmorph-checkbox__input-wrapper{position:relative;width:var(--size);height:var(--size)}.nmorph-checkbox input{opacity:0;position:absolute;top:0;left:0;width:100%;height:100%}.nmorph-checkbox input:focus-visible{opacity:1;scale:.95;outline:2px solid var(--nmorph-accent-color)}.nmorph-checkbox .nmorph-checkbox__fake{border-radius:var(--default-border-radius);width:100%;height:100%;position:absolute;top:0;left:0;background:var(--nmorph-main-color);box-shadow:inset var(--base-shadow-width) var(--base-shadow-width) var(--base-shadow-blur) var(--nmorph-dark-shade-color),inset calc(-1 * var(--base-shadow-width)) calc(-1 * var(--base-shadow-width)) var(--base-shadow-blur) var(--nmorph-light-shade-color)}.nmorph-checkbox .nmorph-checkbox__label,.nmorph-checkbox .nmorph-checkbox__fake span{font-weight:400;font-size:var(--font-size-small);line-height:var(--line-height-regular)}.nmorph-checkbox .nmorph-checkbox__fake-checked{width:50%;height:50%;background:var(--nmorph-accent-color);border-radius:var(--border-radius-20);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.nmorph-checkbox .nmorph-checkbox__label{margin-left:var(--indentation-02);line-height:1}.nmorph-checkbox .nmorph-checkbox__fake span{line-height:.8}.nmorph-checkbox.nmorph-checkbox--button .nmorph-checkbox__fake{position:relative;display:flex;align-items:center;height:var(--size);padding:var(--indentation-03);border-radius:var(--default-border-radius);background:var(--nmorph-main-color);box-shadow:var(--base-shadow-width) var(--base-shadow-width) var(--base-shadow-blur) var(--nmorph-dark-shade-color),calc(-1 * var(--base-shadow-width)) calc(-1 * var(--base-shadow-width)) var(--base-shadow-blur) var(--nmorph-light-shade-color)}.nmorph-checkbox.nmorph-checkbox--checked .nmorph-checkbox__fake{background:var(--nmorph-main-color);box-shadow:inset var(--base-shadow-width) var(--base-shadow-width) var(--base-shadow-blur) var(--nmorph-dark-shade-color),inset calc(-1 * var(--base-shadow-width)) calc(-1 * var(--base-shadow-width)) var(--base-shadow-blur) var(--nmorph-light-shade-color)}.nmorph-checkbox.nmorph-checkbox--disabled{cursor:not-allowed;opacity:.6}
1
+ .nmorph-checkbox{--size: var(--height);display:inline-flex;align-items:center;vertical-align:middle;cursor:pointer}.nmorph-checkbox .nmorph-checkbox__content{position:relative;display:flex;align-items:center;justify-content:center}.nmorph-checkbox .nmorph-checkbox__input-wrapper{position:relative;width:var(--size);height:var(--size)}.nmorph-checkbox input{opacity:0;position:absolute;top:0;left:0;width:100%;height:100%}.nmorph-checkbox input:focus-visible{opacity:1;scale:.95;outline:2px solid var(--nmorph-accent-color)}.nmorph-checkbox .nmorph-checkbox__fake{border-radius:var(--default-border-radius);width:100%;height:100%;position:absolute;top:0;left:0;background:var(--nmorph-main-color);box-shadow:inset var(--base-shadow-width) var(--base-shadow-width) var(--base-shadow-blur) var(--nmorph-dark-shade-color),inset calc(-1 * var(--base-shadow-width)) calc(-1 * var(--base-shadow-width)) var(--base-shadow-blur) var(--nmorph-light-shade-color)}.nmorph-checkbox .nmorph-checkbox__label,.nmorph-checkbox .nmorph-checkbox__fake span{font-weight:400;font-size:var(--font-size-small);line-height:var(--line-height-regular)}.nmorph-checkbox .nmorph-checkbox__fake-checked{width:50%;height:50%;background:var(--nmorph-accent-color);border-radius:var(--border-radius-20);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.nmorph-checkbox .nmorph-checkbox__label{margin-left:var(--indentation-02);line-height:1}.nmorph-checkbox .nmorph-checkbox__fake span{line-height:.8}.nmorph-checkbox.nmorph-checkbox--button .nmorph-checkbox__fake{position:relative;display:flex;align-items:center;justify-content:center;width:auto;min-width:var(--size);height:var(--size);padding:var(--indentation-03);border-radius:var(--default-border-radius);background:var(--nmorph-main-color);box-shadow:var(--base-shadow-width) var(--base-shadow-width) var(--base-shadow-blur) var(--nmorph-dark-shade-color),calc(-1 * var(--base-shadow-width)) calc(-1 * var(--base-shadow-width)) var(--base-shadow-blur) var(--nmorph-light-shade-color)}.nmorph-checkbox.nmorph--extra-thin-component .nmorph-checkbox__label,.nmorph-checkbox.nmorph--extra-thin-component .nmorph-checkbox__fake span{font-size:var(--font-size-tiny);line-height:var(--line-height-line)}.nmorph-checkbox.nmorph--extra-thin-component.nmorph-checkbox--button .nmorph-checkbox__fake{padding:var(--indentation-02)}.nmorph-checkbox.nmorph-checkbox--checked .nmorph-checkbox__fake{background:var(--nmorph-main-color);box-shadow:inset var(--base-shadow-width) var(--base-shadow-width) var(--base-shadow-blur) var(--nmorph-dark-shade-color),inset calc(-1 * var(--base-shadow-width)) calc(-1 * var(--base-shadow-width)) var(--base-shadow-blur) var(--nmorph-light-shade-color)}.nmorph-checkbox.nmorph-checkbox--disabled{cursor:not-allowed;opacity:.6}
@@ -1,6 +1,6 @@
1
1
  import './NmorphCheckbox.css';
2
- import i from "./NmorphCheckbox.vue2.js";
3
- import { openBlock as o, createElementBlock as c, normalizeClass as a, createElementVNode as n, createCommentVNode as s, toDisplayString as d, renderSlot as h } from "vue";
2
+ import h from "./NmorphCheckbox.vue2.js";
3
+ import { openBlock as o, createElementBlock as c, normalizeClass as i, createElementVNode as n, createCommentVNode as l, toDisplayString as a, renderSlot as r } from "vue";
4
4
  /* empty css */
5
5
  import t from "../../../_virtual/_plugin-vue_export-helper.js";
6
6
  const _ = {
@@ -25,11 +25,11 @@ const _ = {
25
25
  key: 1,
26
26
  class: "nmorph-checkbox__fake"
27
27
  };
28
- function C(l, r, g, e, N, D) {
28
+ function C(s, d, g, e, N, D) {
29
29
  return o(), c(
30
30
  "label",
31
31
  {
32
- class: a(e.modifiers)
32
+ class: i(e.modifiers)
33
33
  },
34
34
  [
35
35
  e.props.design === "checkbox" ? (o(), c("div", _, [
@@ -42,27 +42,27 @@ function C(l, r, g, e, N, D) {
42
42
  class: "nmorph-native-input",
43
43
  onChange: e.handleChange
44
44
  }, null, 40, k),
45
- r[0] || (r[0] = n(
45
+ d[0] || (d[0] = n(
46
46
  "div",
47
47
  { class: "nmorph-checkbox__fake" },
48
48
  null,
49
49
  -1
50
50
  /* HOISTED */
51
51
  )),
52
- e.checked ? (o(), c("div", b)) : s("v-if", !0)
52
+ e.checked ? (o(), c("div", b)) : l("v-if", !0)
53
53
  ]),
54
54
  e.props.label ? (o(), c("div", m, [
55
55
  n(
56
56
  "span",
57
57
  null,
58
- d(e.props.label),
58
+ a(e.props.label),
59
59
  1
60
60
  /* TEXT */
61
61
  )
62
62
  ])) : (o(), c("div", f, [
63
- h(l.$slots, "default")
63
+ r(s.$slots, "default")
64
64
  ]))
65
- ])) : s("v-if", !0),
65
+ ])) : l("v-if", !0),
66
66
  e.props.design === "button" ? (o(), c("div", x, [
67
67
  n("input", {
68
68
  ref: "inputDOMRef",
@@ -75,20 +75,22 @@ function C(l, r, g, e, N, D) {
75
75
  n(
76
76
  "span",
77
77
  null,
78
- d(e.props.label),
78
+ a(e.props.label),
79
79
  1
80
80
  /* TEXT */
81
81
  )
82
82
  ])) : (o(), c("div", u, [
83
- h(l.$slots, "label")
83
+ r(s.$slots, "label", {}, () => [
84
+ r(s.$slots, "default")
85
+ ])
84
86
  ]))
85
- ])) : s("v-if", !0)
87
+ ])) : l("v-if", !0)
86
88
  ],
87
89
  2
88
90
  /* CLASS */
89
91
  );
90
92
  }
91
- const R = /* @__PURE__ */ t(i, [["render", C], ["__file", "/builds/ketjo/nmorph/library/src/components/form/nmorph-checkbox/NmorphCheckbox.vue"]]);
93
+ const R = /* @__PURE__ */ t(h, [["render", C], ["__file", "/builds/ketjo/nmorph/library/src/components/form/nmorph-checkbox/NmorphCheckbox.vue"]]);
92
94
  export {
93
95
  R as default
94
96
  };
@@ -1,7 +1,7 @@
1
1
  import './NmorphCheckbox.css';
2
2
  import { defineComponent as y, inject as u, watch as k, ref as i, computed as r } from "vue";
3
3
  import { useModifiers as x } from "../../../utils/create-modifiers.js";
4
- import { NmorphComponentHeight as V } from "../../../types/index.js";
4
+ import { NmorphSelectionControlHeight as S } from "../../../types/index.js";
5
5
  const $ = /* @__PURE__ */ y({
6
6
  __name: "NmorphCheckbox",
7
7
  props: {
@@ -9,7 +9,7 @@ const $ = /* @__PURE__ */ y({
9
9
  disabled: { type: Boolean, required: !1, default: !1 },
10
10
  modelValue: { type: Boolean, required: !1, default: !1 },
11
11
  label: { type: String, required: !1, default: "" },
12
- design: { type: String, required: !1, default: "checkbox" },
12
+ design: { type: String, required: !1, default: "button" },
13
13
  height: { type: null, required: !1 }
14
14
  },
15
15
  emits: ["update:model-value"],
@@ -20,16 +20,16 @@ const $ = /* @__PURE__ */ y({
20
20
  ), a = u(
21
21
  "change-checkbox-value-handler",
22
22
  void 0
23
- ), d = u("checkbox-group-height", void 0), e = f;
23
+ ), n = u("checkbox-group-height", void 0), e = f;
24
24
  k(
25
25
  () => e.modelValue,
26
26
  (_) => {
27
27
  t.value = _;
28
28
  }
29
29
  );
30
- const n = i(null);
31
- m({ inputDOMRef: n });
32
- const o = l !== void 0, t = o ? i(l.value) : i(e.modelValue), s = r(() => o ? l.value.includes(e.id) : e.modelValue), c = r(() => e.height || d?.value || "thin"), p = v, g = () => {
30
+ const d = i(null);
31
+ m({ inputDOMRef: d });
32
+ const o = l !== void 0, t = o ? i(l.value) : i(e.modelValue), s = r(() => o ? l.value.includes(e.id) : e.modelValue), c = r(() => e.height || n?.value || "thin"), p = v, g = () => {
33
33
  if (!e.disabled) {
34
34
  if (!o) {
35
35
  t.value = !t.value, p("update:model-value", t.value);
@@ -39,14 +39,14 @@ const $ = /* @__PURE__ */ y({
39
39
  }
40
40
  }, b = r(
41
41
  () => x({
42
- nmorph: [V[c.value]],
42
+ nmorph: [S[c.value]],
43
43
  "nmorph-checkbox": [
44
44
  `${s.value && "checked"}`,
45
45
  `${e.disabled && "disabled"}`,
46
46
  `${e.design === "button" && "button"}`
47
47
  ]
48
48
  })
49
- ), h = { groupSelectedValue: l, changeValue: a, groupHeight: d, props: e, inputDOMRef: n, hasGroup: o, initialValue: t, checked: s, height: c, emit: p, handleChange: g, modifiers: b };
49
+ ), h = { groupSelectedValue: l, changeValue: a, groupHeight: n, props: e, inputDOMRef: d, hasGroup: o, initialValue: t, checked: s, height: c, emit: p, handleChange: g, modifiers: b };
50
50
  return Object.defineProperty(h, "__isScriptSetup", { enumerable: !1, value: !0 }), h;
51
51
  }
52
52
  });
@@ -1,38 +1,46 @@
1
1
  import './NmorphCheckboxGroup.css';
2
- import { defineComponent as m, ref as h, computed as d, provide as o } from "vue";
3
- import { useModifiers as g } from "../../../utils/create-modifiers.js";
4
- import b from "../nmorph-checkbox/NmorphCheckbox.vue.js";
5
- const q = /* @__PURE__ */ m({
2
+ import { defineComponent as m, ref as h, watch as g, computed as d, provide as o } from "vue";
3
+ import { useModifiers as b } from "../../../utils/create-modifiers.js";
4
+ import y from "../nmorph-checkbox/NmorphCheckbox.vue.js";
5
+ const _ = /* @__PURE__ */ m({
6
6
  __name: "NmorphCheckboxGroup",
7
7
  props: {
8
8
  modelValue: { type: Array, required: !0, default: () => [] },
9
9
  options: { type: Array, required: !1, default: () => [] },
10
- design: { type: String, required: !1, default: "checkbox" },
10
+ design: { type: String, required: !1, default: "button" },
11
11
  direction: { type: null, required: !1, default: "row" },
12
+ height: { type: null, required: !1, default: "thin" },
12
13
  id: { type: String, required: !1 },
13
14
  name: { type: String, required: !1 },
14
15
  autocomplete: { type: String, required: !1 },
15
- height: { type: null, required: !1, default: "thin" },
16
16
  disabled: { type: Boolean, required: !1, default: !1 },
17
17
  tabindex: { type: Number, required: !1 }
18
18
  },
19
19
  emits: ["update:model-value"],
20
20
  setup(n, { expose: p, emit: s }) {
21
21
  p();
22
- const r = n, e = h(r.modelValue), u = s, l = (t) => {
23
- e.value.includes(t) ? e.value = e.value.filter((f) => f !== t) : e.value.push(t), u("update:model-value", e.value);
22
+ const r = n, e = h([...r.modelValue]);
23
+ g(
24
+ () => r.modelValue,
25
+ (t) => {
26
+ e.value = [...t];
27
+ },
28
+ { deep: !0 }
29
+ );
30
+ const u = s, a = (t) => {
31
+ e.value = e.value.includes(t) ? e.value.filter((f) => f !== t) : [...e.value, t], u("update:model-value", e.value);
24
32
  }, c = d(
25
- () => g({
33
+ () => b({
26
34
  "nmorph-checkbox-group": [r.design, r.direction]
27
35
  })
28
- ), a = d(() => r.height);
29
- o("checkbox-group-selected-value", e), o("change-checkbox-value-handler", l), o("checkbox-group-height", a);
30
- const i = { props: r, initialValue: e, emit: u, changeHandler: l, modifiers: c, height: a, get NmorphCheckbox() {
31
- return b;
36
+ ), l = d(() => r.height);
37
+ o("checkbox-group-selected-value", e), o("change-checkbox-value-handler", a), o("checkbox-group-height", l);
38
+ const i = { props: r, initialValue: e, emit: u, changeHandler: a, modifiers: c, height: l, get NmorphCheckbox() {
39
+ return y;
32
40
  } };
33
41
  return Object.defineProperty(i, "__isScriptSetup", { enumerable: !1, value: !0 }), i;
34
42
  }
35
43
  });
36
44
  export {
37
- q as default
45
+ _ as default
38
46
  };
@@ -20,44 +20,45 @@ const E = /* @__PURE__ */ R({
20
20
  setup(_, { expose: q, emit: M }) {
21
21
  const o = _, g = M, { id: V, name: S, tabindex: x } = L(o), s = (e, r = "#000000") => {
22
22
  const t = e?.trim() || "";
23
- return /^#[\da-f]{6}$/i.test(t) ? t.toLowerCase() : /^#[\da-f]{3}$/i.test(t) ? `#${t.slice(1).split("").map((a) => `${a}${a}`).join("").toLowerCase()}` : r;
23
+ return /^#[\da-f]{6}$/i.test(t) ? t.toLowerCase() : /^#[\da-f]{3}$/i.test(t) ? `#${t.slice(1).split("").map((n) => `${n}${n}`).join("").toLowerCase()}` : r;
24
24
  }, c = h(null), m = () => {
25
+ if (typeof document > "u") return "#006cb6";
25
26
  const e = c.value || document.documentElement, r = getComputedStyle(e).getPropertyValue("--nmorph-accent-color").trim();
26
27
  return s(r, "#006cb6");
27
- }, n = h(s(o.modelValue)), b = h(!1);
28
+ }, a = h(s(o.modelValue)), b = h(!1);
28
29
  j(
29
30
  () => o.modelValue,
30
31
  (e) => {
31
- n.value = e ? s(e) : m();
32
+ a.value = e ? s(e) : m();
32
33
  }
33
34
  );
34
35
  const I = (e) => {
35
36
  const r = e.target, t = s(r.value);
36
- n.value = t, g("update:model-value", t);
37
+ a.value = t, g("update:model-value", t);
37
38
  }, p = (e) => [
38
39
  parseInt(e.slice(1, 3), 16),
39
40
  parseInt(e.slice(3, 5), 16),
40
41
  parseInt(e.slice(5, 7), 16)
41
42
  ], y = (e) => {
42
- const [r, t, a] = p(e);
43
- return `rgb(${r}, ${t}, ${a})`;
43
+ const [r, t, n] = p(e);
44
+ return `rgb(${r}, ${t}, ${n})`;
44
45
  }, $ = (e) => {
45
- const [r, t, a] = p(e).map((P) => P / 255), l = Math.max(r, t, a), u = Math.min(r, t, a), f = (l + u) / 2;
46
+ const [r, t, n] = p(e).map((P) => P / 255), l = Math.max(r, t, n), u = Math.min(r, t, n), f = (l + u) / 2;
46
47
  if (l === u)
47
48
  return `hsl(0, 0%, ${Math.round(f * 100)}%)`;
48
49
  const i = l - u, N = f > 0.5 ? i / (2 - l - u) : i / (l + u);
49
50
  let d = 0;
50
- return l === r ? d = (t - a) / i + (t < a ? 6 : 0) : l === t ? d = (a - r) / i + 2 : d = (r - t) / i + 4, `hsl(${Math.round(d * 60)}, ${Math.round(N * 100)}%, ${Math.round(f * 100)}%)`;
51
+ return l === r ? d = (t - n) / i + (t < n ? 6 : 0) : l === t ? d = (n - r) / i + 2 : d = (r - t) / i + 4, `hsl(${Math.round(d * 60)}, ${Math.round(N * 100)}%, ${Math.round(f * 100)}%)`;
51
52
  };
52
53
  k(() => {
53
- o.modelValue || (n.value = m());
54
+ o.modelValue || (a.value = m());
54
55
  }), q({ inputDOMRef: c });
55
56
  const F = C(
56
57
  () => H({
57
58
  nmorph: [B[o.height], `${b.value && "focused"}`],
58
59
  "nmorph-color-picker": [`${o.disabled && "disabled"}`, o.displayFormat]
59
60
  })
60
- ), w = C(() => o.displayFormat === "rgb" ? y(n.value) : o.displayFormat === "hsl" ? $(n.value) : n.value.toUpperCase()), v = { props: o, emit: g, id: V, name: S, tabindex: x, normalizeColor: s, inputDOMRef: c, resolveAccentColor: m, currentValue: n, focused: b, handleInput: I, hexToRgb: p, formatRgb: y, formatHsl: $, modifiers: F, displayValue: w };
61
+ ), w = C(() => o.displayFormat === "rgb" ? y(a.value) : o.displayFormat === "hsl" ? $(a.value) : a.value.toUpperCase()), v = { props: o, emit: g, id: V, name: S, tabindex: x, normalizeColor: s, inputDOMRef: c, resolveAccentColor: m, currentValue: a, focused: b, handleInput: I, hexToRgb: p, formatRgb: y, formatHsl: $, modifiers: F, displayValue: w };
61
62
  return Object.defineProperty(v, "__isScriptSetup", { enumerable: !1, value: !0 }), v;
62
63
  }
63
64
  });
@@ -1 +1 @@
1
- .nmorph-radio{--size: var(--height);display:inline-flex;align-items:center;cursor:pointer}.nmorph-radio .nmorph-radio__content{position:relative;display:flex;align-items:center;justify-content:center}.nmorph-radio span{margin-top:2px}.nmorph-radio .nmorph-radio__input-wrapper{position:relative;width:var(--size);height:var(--size)}.nmorph-radio input{position:absolute;top:0;left:0;width:100%;height:100%}.nmorph-radio input:focus-visible{background:var(--nmorph-main-color);box-shadow:var(--base-shadow-width) var(--base-shadow-width) var(--base-shadow-blur) var(--nmorph-dark-shade-color),calc(-1 * var(--base-shadow-width)) calc(-1 * var(--base-shadow-width)) var(--base-shadow-blur) var(--nmorph-light-shade-color)}.nmorph-radio .nmorph-radio__fake{border-radius:var(--border-radius-circular);width:100%;height:100%;position:absolute;top:0;left:0;background:var(--nmorph-main-color);box-shadow:inset var(--base-shadow-width) var(--base-shadow-width) var(--base-shadow-blur) var(--nmorph-dark-shade-color),inset calc(-1 * var(--base-shadow-width)) calc(-1 * var(--base-shadow-width)) var(--base-shadow-blur) var(--nmorph-light-shade-color)}.nmorph-radio .nmorph-radio__fake span,.nmorph-radio .nmorph-radio__label{font-weight:400;font-size:var(--font-size-small);line-height:var(--line-height-regular)}.nmorph-radio .nmorph-radio__fake-checked{width:50%;height:50%;background:var(--nmorph-accent-color);border-radius:var(--border-radius-circular);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.nmorph-radio .nmorph-radio__label{margin-left:var(--indentation-02)}.nmorph-radio.nmorph-radio--button .nmorph-radio__fake{position:relative;display:flex;align-items:center;justify-content:center;height:var(--size);padding:var(--indentation-03);white-space:nowrap;border-radius:var(--default-border-radius);background:var(--nmorph-main-color);box-shadow:var(--base-shadow-width) var(--base-shadow-width) var(--base-shadow-blur) var(--nmorph-dark-shade-color),calc(-1 * var(--base-shadow-width)) calc(-1 * var(--base-shadow-width)) var(--base-shadow-blur) var(--nmorph-light-shade-color)}.nmorph-radio.nmorph-radio--checked .nmorph-radio__fake{background:var(--nmorph-main-color);box-shadow:inset var(--base-shadow-width) var(--base-shadow-width) var(--base-shadow-blur) var(--nmorph-dark-shade-color),inset calc(-1 * var(--base-shadow-width)) calc(-1 * var(--base-shadow-width)) var(--base-shadow-blur) var(--nmorph-light-shade-color)}.nmorph-radio.nmorph-radio--disabled{cursor:not-allowed;opacity:.6}
1
+ .nmorph-radio{--size: var(--height);display:inline-flex;align-items:center;cursor:pointer}.nmorph-radio .nmorph-radio__content{position:relative;display:flex;align-items:center;justify-content:center}.nmorph-radio span{margin-top:2px}.nmorph-radio .nmorph-radio__input-wrapper{position:relative;width:var(--size);height:var(--size)}.nmorph-radio input{position:absolute;top:0;left:0;width:100%;height:100%}.nmorph-radio input:focus-visible{background:var(--nmorph-main-color);box-shadow:var(--base-shadow-width) var(--base-shadow-width) var(--base-shadow-blur) var(--nmorph-dark-shade-color),calc(-1 * var(--base-shadow-width)) calc(-1 * var(--base-shadow-width)) var(--base-shadow-blur) var(--nmorph-light-shade-color)}.nmorph-radio .nmorph-radio__fake{border-radius:var(--border-radius-circular);width:100%;height:100%;position:absolute;top:0;left:0;background:var(--nmorph-main-color);box-shadow:inset var(--base-shadow-width) var(--base-shadow-width) var(--base-shadow-blur) var(--nmorph-dark-shade-color),inset calc(-1 * var(--base-shadow-width)) calc(-1 * var(--base-shadow-width)) var(--base-shadow-blur) var(--nmorph-light-shade-color)}.nmorph-radio .nmorph-radio__fake span,.nmorph-radio .nmorph-radio__label{font-weight:400;font-size:var(--font-size-small);line-height:var(--line-height-regular)}.nmorph-radio .nmorph-radio__fake-checked{width:50%;height:50%;background:var(--nmorph-accent-color);border-radius:var(--border-radius-circular);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.nmorph-radio .nmorph-radio__label{margin-left:var(--indentation-02)}.nmorph-radio.nmorph-radio--button .nmorph-radio__fake{position:relative;display:flex;align-items:center;justify-content:center;height:var(--size);padding:var(--indentation-03);white-space:nowrap;border-radius:var(--default-border-radius);background:var(--nmorph-main-color);box-shadow:var(--base-shadow-width) var(--base-shadow-width) var(--base-shadow-blur) var(--nmorph-dark-shade-color),calc(-1 * var(--base-shadow-width)) calc(-1 * var(--base-shadow-width)) var(--base-shadow-blur) var(--nmorph-light-shade-color)}.nmorph-radio.nmorph--extra-thin-component .nmorph-radio__fake span,.nmorph-radio.nmorph--extra-thin-component .nmorph-radio__label{font-size:var(--font-size-tiny);line-height:var(--line-height-line)}.nmorph-radio.nmorph--extra-thin-component.nmorph-radio--button .nmorph-radio__fake{padding:var(--indentation-02)}.nmorph-radio.nmorph-radio--checked .nmorph-radio__fake{background:var(--nmorph-main-color);box-shadow:inset var(--base-shadow-width) var(--base-shadow-width) var(--base-shadow-blur) var(--nmorph-dark-shade-color),inset calc(-1 * var(--base-shadow-width)) calc(-1 * var(--base-shadow-width)) var(--base-shadow-blur) var(--nmorph-light-shade-color)}.nmorph-radio.nmorph-radio--disabled{cursor:not-allowed;opacity:.6}