nexa-ui-kit 0.9.0 → 0.11.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/dist/components/NAlert.js +48 -27
- package/dist/components/NAlert.nexa +12 -6
- package/dist/components/NAutocomplete.js +24 -19
- package/dist/components/NAutocomplete.nexa +3 -3
- package/dist/components/NBottomSheet.js +17 -17
- package/dist/components/NBottomSheet.nexa +2 -2
- package/dist/components/NButton.js +58 -58
- package/dist/components/NButton.nexa +10 -9
- package/dist/components/NCard.js +1 -1
- package/dist/components/NCard.nexa +1 -1
- package/dist/components/NCheckbox.js +22 -18
- package/dist/components/NCheckbox.nexa +2 -1
- package/dist/components/NChips.js +12 -9
- package/dist/components/NChips.nexa +1 -1
- package/dist/components/NDataTable.js +359 -41
- package/dist/components/NDataTable.nexa +318 -10
- package/dist/components/NDatepicker.js +51 -42
- package/dist/components/NDatepicker.nexa +3 -3
- package/dist/components/NInput.js +50 -40
- package/dist/components/NInput.nexa +4 -3
- package/dist/components/NInputNumber.js +17 -12
- package/dist/components/NInputNumber.nexa +2 -2
- package/dist/components/NModal.js +33 -27
- package/dist/components/NModal.nexa +4 -4
- package/dist/components/NMultiSelect.js +46 -37
- package/dist/components/NMultiSelect.nexa +3 -3
- package/dist/components/NPaginator.js +28 -20
- package/dist/components/NPaginator.nexa +4 -4
- package/dist/components/NPassword.js +60 -46
- package/dist/components/NPassword.nexa +5 -4
- package/dist/components/NProgressBar.js +4 -4
- package/dist/components/NProgressBar.nexa +4 -4
- package/dist/components/NSelect.js +67 -62
- package/dist/components/NSelect.nexa +4 -4
- package/dist/components/NTag.js +26 -23
- package/dist/components/NTag.nexa +6 -6
- package/dist/components/NToastContainer.js +64 -48
- package/dist/components/NToastContainer.nexa +6 -3
- package/dist/components/NTreeMenu.js +23 -21
- package/dist/components/NTreeMenu.nexa +1 -1
- package/dist/styles/tokens.css +18 -0
- package/package.json +4 -4
- package/src/components/NAlert.nexa +12 -6
- package/src/components/NAutocomplete.nexa +3 -3
- package/src/components/NBottomSheet.nexa +2 -2
- package/src/components/NButton.nexa +10 -9
- package/src/components/NCard.nexa +1 -1
- package/src/components/NCheckbox.nexa +2 -1
- package/src/components/NChips.nexa +1 -1
- package/src/components/NDataTable.nexa +318 -10
- package/src/components/NDatepicker.nexa +3 -3
- package/src/components/NInput.nexa +4 -3
- package/src/components/NInputNumber.nexa +2 -2
- package/src/components/NModal.nexa +4 -4
- package/src/components/NMultiSelect.nexa +3 -3
- package/src/components/NPaginator.nexa +4 -4
- package/src/components/NPassword.nexa +5 -4
- package/src/components/NProgressBar.nexa +4 -4
- package/src/components/NSelect.nexa +4 -4
- package/src/components/NTag.nexa +6 -6
- package/src/components/NToastContainer.nexa +6 -3
- package/src/components/NTreeMenu.nexa +1 -1
- package/src/styles/tokens.css +18 -0
|
@@ -2,7 +2,7 @@ import { signal, computed, inject, onBeforeUnmount, effect, batch, h, hText, def
|
|
|
2
2
|
import { trackFloatingOverlay } from '../services/FloatingOverlay.js'
|
|
3
3
|
|
|
4
4
|
const _sfc_main = defineComponent({
|
|
5
|
-
__scopeId: 'data-v-
|
|
5
|
+
__scopeId: 'data-v-261608b5',
|
|
6
6
|
__hmrId: 'NMultiSelect_nexa',
|
|
7
7
|
props: { modelValue: { type: Array, default: () => [] }, options: { type: Array, default: () => [] }, placeholder: { type: String, default: 'Select...' }, label: { type: String, default: '' }, disabled: { type: Boolean, default: false }, bindField: { type: Boolean, default: false }, searchable: { type: Boolean, default: false }, clearable: { type: Boolean, default: false }, placement: { type: String, default: 'auto' }, appendTo: { type: String, default: 'self' }, maxChips: { type: Number, default: 3 } },
|
|
8
8
|
emits: ['update:modelValue', 'clear'],
|
|
@@ -65,80 +65,89 @@ const _sfc_main = defineComponent({
|
|
|
65
65
|
// Injected render function
|
|
66
66
|
_sfc_main.render = function(ctx) {
|
|
67
67
|
let { field, instanceId, isOpen, query, queryDraft, focusedIndex, popupStyle, resolvedPlacement, rootEl, stopTracking, outsideHandler, normalizeOption, normalizedOptions, effectiveModelValue, effectiveDisabled, selectedSet, filteredOptions, selectedLabels, close, open, toggleOpen, setModel, toggleValue, clear, removeChip, onKeydown, onSearchInput, inject, onBeforeUnmount, batch, trackFloatingOverlay, $slots, emit, modelValue, options, placeholder, label, disabled, bindField, searchable, clearable, placement, appendTo, maxChips, Fragment: _ntc_Fragment, Teleport: _ntc_Teleport } = ctx
|
|
68
|
-
return h('div', { class: ["n-ms", { 'is-open': isOpen.value, 'is-disabled': effectiveDisabled.value }], "data-ms-root": instanceId, "data-v-
|
|
68
|
+
return h('div', { class: ["n-ms", { 'is-open': isOpen.value, 'is-disabled': effectiveDisabled.value }], "data-ms-root": instanceId, "data-v-261608b5": "" }, [
|
|
69
69
|
"\n ",
|
|
70
|
-
(label) ? h('label', { class: "n-ms-label", "data-v-
|
|
70
|
+
(label) ? h('label', { class: "n-ms-label", "data-v-261608b5": "" }, [
|
|
71
71
|
label
|
|
72
72
|
]) : null,
|
|
73
|
-
h('div', { class: "n-ms-trigger", role: "combobox", tabindex: "0", "aria-expanded": isOpen.value, onClick: toggleOpen, onKeydown: onKeydown, "data-v-
|
|
73
|
+
h('div', { class: "n-ms-trigger", role: "combobox", tabindex: "0", "aria-expanded": isOpen.value, onClick: toggleOpen, onKeydown: onKeydown, "data-v-261608b5": "" }, [
|
|
74
74
|
"\n ",
|
|
75
|
-
(selectedLabels.value.length > 0) ? h('div', { class: "n-ms-chips", "data-v-
|
|
75
|
+
(selectedLabels.value.length > 0) ? h('div', { class: "n-ms-chips", "data-v-261608b5": "" }, [
|
|
76
76
|
(selectedLabels.value.slice(0, maxChips)).map((c, index) =>
|
|
77
|
-
h('div', { class: "n-ms-chip", key: String(c.value), "data-v-
|
|
78
|
-
h('span', { class: "n-ms-chip-label", "data-v-
|
|
77
|
+
h('div', { class: "n-ms-chip", key: String(c.value), "data-v-261608b5": "" }, [
|
|
78
|
+
h('span', { class: "n-ms-chip-label", "data-v-261608b5": "" }, [
|
|
79
79
|
c.label
|
|
80
80
|
]),
|
|
81
|
-
h('button', { class: "n-ms-chip-remove", type: "button", "aria-label": "Remove", tabindex: "-1", disabled: effectiveDisabled.value, onClick: ($event) => { removeChip(c.value, $event) }, "data-v-
|
|
81
|
+
h('button', { class: "n-ms-chip-remove", type: "button", "aria-label": "Remove", tabindex: "-1", disabled: effectiveDisabled.value, onClick: ($event) => { removeChip(c.value, $event) }, "data-v-261608b5": "" }, [
|
|
82
82
|
"✕"
|
|
83
83
|
])
|
|
84
84
|
])
|
|
85
85
|
),
|
|
86
|
-
(selectedLabels.value.length > maxChips) ? h('span', { class: "n-ms-more", "data-v-
|
|
86
|
+
(selectedLabels.value.length > maxChips) ? h('span', { class: "n-ms-more", "data-v-261608b5": "" }, [
|
|
87
87
|
"+",
|
|
88
88
|
selectedLabels.value.length - maxChips
|
|
89
89
|
]) : null
|
|
90
|
-
]) : (true) ? h('span', { class: "n-ms-placeholder", "data-v-
|
|
90
|
+
]) : (true) ? h('span', { class: "n-ms-placeholder", "data-v-261608b5": "" }, [
|
|
91
91
|
placeholder
|
|
92
92
|
]) : null,
|
|
93
93
|
"\n ",
|
|
94
|
-
h('div', { class: "n-ms-actions", "data-v-
|
|
95
|
-
(clearable && selectedLabels.value.length > 0) ? h('button', { class: "n-ms-clear", type: "button", tabindex: "-1", onClick: ($event) => { $event.stopPropagation(); (clear)($event) }, "data-v-
|
|
96
|
-
"
|
|
94
|
+
h('div', { class: "n-ms-actions", "data-v-261608b5": "" }, [
|
|
95
|
+
(clearable && selectedLabels.value.length > 0) ? h('button', { class: "n-ms-clear", type: "button", tabindex: "-1", onClick: ($event) => { $event.stopPropagation(); (clear)($event) }, "aria-label": "Clear", "data-v-261608b5": "" }, [
|
|
96
|
+
h('svg', { viewBox: "0 0 24 24", width: "14", height: "14", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", focusable: "false", "aria-hidden": "true", "data-v-261608b5": "" }, [
|
|
97
|
+
h('path', { d: "M18 6L6 18", "data-v-261608b5": "" }),
|
|
98
|
+
h('path', { d: "M6 6l12 12", "data-v-261608b5": "" })
|
|
99
|
+
])
|
|
97
100
|
]) : null,
|
|
98
|
-
h('span', { class: "n-ms-arrow", "data-v-
|
|
99
|
-
"
|
|
101
|
+
h('span', { class: "n-ms-arrow", "data-v-261608b5": "" }, [
|
|
102
|
+
h('svg', { viewBox: "0 0 24 24", width: "16", height: "16", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", focusable: "false", "aria-hidden": "true", "data-v-261608b5": "" }, [
|
|
103
|
+
h('path', { d: "M6 9l6 6 6-6", "data-v-261608b5": "" })
|
|
104
|
+
])
|
|
100
105
|
])
|
|
101
106
|
]),
|
|
102
107
|
"\n "
|
|
103
108
|
]),
|
|
104
109
|
"\n ",
|
|
105
|
-
(isOpen.value && appendTo !== 'body') ? h('div', { class: "n-ms-dropdown", "data-v-
|
|
106
|
-
(searchable) ? h('div', { class: "n-ms-search", "data-v-
|
|
107
|
-
h('input', { class: "n-ms-search-input", value: queryDraft.value, placeholder: "Search...", onInput: onSearchInput, onKeydown: ($event) => { $event.stopPropagation(); (onKeydown)($event) }, "data-v-
|
|
110
|
+
(isOpen.value && appendTo !== 'body') ? h('div', { class: "n-ms-dropdown", "data-v-261608b5": "" }, [
|
|
111
|
+
(searchable) ? h('div', { class: "n-ms-search", "data-v-261608b5": "" }, [
|
|
112
|
+
h('input', { class: "n-ms-search-input", value: queryDraft.value, placeholder: "Search...", onInput: onSearchInput, onKeydown: ($event) => { $event.stopPropagation(); (onKeydown)($event) }, "data-v-261608b5": "" })
|
|
108
113
|
]) : null,
|
|
109
|
-
h('div', { class: "n-ms-options", "data-v-
|
|
114
|
+
h('div', { class: "n-ms-options", "data-v-261608b5": "" }, [
|
|
110
115
|
(filteredOptions.value).map((opt, i) =>
|
|
111
|
-
h('button', { class: ["n-ms-option", { 'is-selected': selectedSet.value.has(opt.value), 'is-focused': i === focusedIndex.value, 'is-disabled': opt.disabled }], key: String(opt.value) + ':' + i, type: "button", "data-ms-opt": String(opt.value), disabled: opt.disabled, onMouseenter: ($event) => { focusedIndex.value = i }, onClick: ($event) => { toggleValue(opt.value) }, "data-v-
|
|
112
|
-
h('span', { class: "n-ms-check", "data-v-
|
|
113
|
-
selectedSet.value.has(opt.value) ? '
|
|
116
|
+
h('button', { class: ["n-ms-option", { 'is-selected': selectedSet.value.has(opt.value), 'is-focused': i === focusedIndex.value, 'is-disabled': opt.disabled }], key: String(opt.value) + ':' + i, type: "button", "data-ms-opt": String(opt.value), disabled: opt.disabled, onMouseenter: ($event) => { focusedIndex.value = i }, onClick: ($event) => { toggleValue(opt.value) }, "data-v-261608b5": "" }, [
|
|
117
|
+
h('span', { class: "n-ms-check", "data-v-261608b5": "" }, [
|
|
118
|
+
(selectedSet.value.has(opt.value)) ? h('svg', { viewBox: "0 0 24 24", width: "14", height: "14", fill: "none", stroke: "currentColor", "stroke-width": "2.5", "stroke-linecap": "round", "stroke-linejoin": "round", focusable: "false", "aria-hidden": "true", "data-v-261608b5": "" }, [
|
|
119
|
+
h('path', { d: "M20 6L9 17l-5-5", "data-v-261608b5": "" })
|
|
120
|
+
]) : null
|
|
114
121
|
]),
|
|
115
|
-
h('span', { class: "n-ms-option-label", "data-v-
|
|
122
|
+
h('span', { class: "n-ms-option-label", "data-v-261608b5": "" }, [
|
|
116
123
|
opt.label
|
|
117
124
|
])
|
|
118
125
|
])
|
|
119
126
|
),
|
|
120
|
-
(filteredOptions.value.length === 0) ? h('div', { class: "n-ms-empty", "data-v-
|
|
127
|
+
(filteredOptions.value.length === 0) ? h('div', { class: "n-ms-empty", "data-v-261608b5": "" }, [
|
|
121
128
|
"No options"
|
|
122
129
|
]) : null
|
|
123
130
|
])
|
|
124
131
|
]) : null,
|
|
125
|
-
h(_ntc_Teleport, { to: "body", "data-v-
|
|
126
|
-
(isOpen.value && appendTo === 'body') ? h('div', { class: ["n-ms-dropdown", { 'is-top': resolvedPlacement.value === 'top' }], "data-ms-popup": instanceId, style: popupStyle.value, "data-v-
|
|
127
|
-
(searchable) ? h('div', { class: "n-ms-search", "data-v-
|
|
128
|
-
h('input', { class: "n-ms-search-input", value: queryDraft.value, placeholder: "Search...", onInput: onSearchInput, onKeydown: ($event) => { $event.stopPropagation(); (onKeydown)($event) }, "data-v-
|
|
132
|
+
h(_ntc_Teleport, { to: "body", "data-v-261608b5": "" }, [
|
|
133
|
+
(isOpen.value && appendTo === 'body') ? h('div', { class: ["n-ms-dropdown", { 'is-top': resolvedPlacement.value === 'top' }], "data-ms-popup": instanceId, style: popupStyle.value, "data-v-261608b5": "" }, [
|
|
134
|
+
(searchable) ? h('div', { class: "n-ms-search", "data-v-261608b5": "" }, [
|
|
135
|
+
h('input', { class: "n-ms-search-input", value: queryDraft.value, placeholder: "Search...", onInput: onSearchInput, onKeydown: ($event) => { $event.stopPropagation(); (onKeydown)($event) }, "data-v-261608b5": "" })
|
|
129
136
|
]) : null,
|
|
130
|
-
h('div', { class: "n-ms-options", "data-v-
|
|
137
|
+
h('div', { class: "n-ms-options", "data-v-261608b5": "" }, [
|
|
131
138
|
(filteredOptions.value).map((opt, i) =>
|
|
132
|
-
h('button', { class: ["n-ms-option", { 'is-selected': selectedSet.value.has(opt.value), 'is-focused': i === focusedIndex.value, 'is-disabled': opt.disabled }], key: String(opt.value) + ':' + i, type: "button", "data-ms-opt": String(opt.value), disabled: opt.disabled, onMouseenter: ($event) => { focusedIndex.value = i }, onClick: ($event) => { toggleValue(opt.value) }, "data-v-
|
|
133
|
-
h('span', { class: "n-ms-check", "data-v-
|
|
134
|
-
selectedSet.value.has(opt.value) ? '
|
|
139
|
+
h('button', { class: ["n-ms-option", { 'is-selected': selectedSet.value.has(opt.value), 'is-focused': i === focusedIndex.value, 'is-disabled': opt.disabled }], key: String(opt.value) + ':' + i, type: "button", "data-ms-opt": String(opt.value), disabled: opt.disabled, onMouseenter: ($event) => { focusedIndex.value = i }, onClick: ($event) => { toggleValue(opt.value) }, "data-v-261608b5": "" }, [
|
|
140
|
+
h('span', { class: "n-ms-check", "data-v-261608b5": "" }, [
|
|
141
|
+
(selectedSet.value.has(opt.value)) ? h('svg', { viewBox: "0 0 24 24", width: "14", height: "14", fill: "none", stroke: "currentColor", "stroke-width": "2.5", "stroke-linecap": "round", "stroke-linejoin": "round", focusable: "false", "aria-hidden": "true", "data-v-261608b5": "" }, [
|
|
142
|
+
h('path', { d: "M20 6L9 17l-5-5", "data-v-261608b5": "" })
|
|
143
|
+
]) : null
|
|
135
144
|
]),
|
|
136
|
-
h('span', { class: "n-ms-option-label", "data-v-
|
|
145
|
+
h('span', { class: "n-ms-option-label", "data-v-261608b5": "" }, [
|
|
137
146
|
opt.label
|
|
138
147
|
])
|
|
139
148
|
])
|
|
140
149
|
),
|
|
141
|
-
(filteredOptions.value.length === 0) ? h('div', { class: "n-ms-empty", "data-v-
|
|
150
|
+
(filteredOptions.value.length === 0) ? h('div', { class: "n-ms-empty", "data-v-261608b5": "" }, [
|
|
142
151
|
"No options"
|
|
143
152
|
]) : null
|
|
144
153
|
])
|
|
@@ -147,10 +156,10 @@ _sfc_main.render = function(ctx) {
|
|
|
147
156
|
"\n "
|
|
148
157
|
])
|
|
149
158
|
}
|
|
150
|
-
_sfc_main.__scopeId = 'data-v-
|
|
159
|
+
_sfc_main.__scopeId = 'data-v-261608b5'
|
|
151
160
|
_sfc_main.__hmrId = 'NMultiSelect_nexa'
|
|
152
161
|
|
|
153
162
|
export default _sfc_main
|
|
154
163
|
|
|
155
|
-
const __style = `.n-ms[data-v-
|
|
156
|
-
injectStyle('data-v-
|
|
164
|
+
const __style = `.n-ms[data-v-261608b5]{position:relative;width:100%;font-family:var(--n-font-sans)}.n-ms-label{display:block;font-size:var(--n-text-sm);font-weight:var(--n-weight-medium);color:var(--n-color-text-secondary);margin-bottom:var(--n-space-2)}.n-ms-trigger{background:var(--n-color-surface);border:1px solid var(--n-color-border);border-radius:var(--n-radius-md);padding:0.5rem 0.75rem;display:flex;justify-content:space-between;align-items:center;cursor:pointer;transition:all var(--n-transition-fast);color:var(--n-color-text);gap:var(--n-space-2);min-height:44px}.n-ms-trigger:focus-visible{border-color:var(--n-color-primary);box-shadow:0 0 0 3px var(--n-color-primary-light)}.n-ms.is-open .n-ms-trigger{border-color:var(--n-color-primary);box-shadow:0 0 0 3px var(--n-color-primary-light)}.n-ms-placeholder{color:var(--n-color-text-muted)}.n-ms-actions{display:flex;align-items:center;gap:0.25rem;flex-shrink:0}.n-ms-clear{background:transparent;border:none;color:var(--n-color-text-muted);cursor:pointer;padding:0.15rem;font-size:var(--n-text-xs);border-radius:var(--n-radius-sm);line-height:1}.n-ms-clear:hover{color:var(--n-color-text)}.n-ms-arrow{color:var(--n-color-text-muted);transition:transform var(--n-transition-fast);font-size:var(--n-text-xs)}.is-open .n-ms-arrow{transform:rotate(180deg)}.n-ms-chips{display:flex;flex-wrap:wrap;gap:var(--n-space-2);align-items:center;min-width:0}.n-ms-chip{display:inline-flex;align-items:center;gap:0.35rem;padding:0.2rem 0.45rem;border-radius:999px;background:var(--n-color-glass);border:1px solid var(--n-color-border);font-size:var(--n-text-xs);line-height:1;max-width:12rem}.n-ms-chip-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:10rem}.n-ms-chip-remove{background:transparent;border:none;color:var(--n-color-text-muted);cursor:pointer;padding:0;line-height:1;display:flex;align-items:center}.n-ms-chip-remove:hover:not(:disabled){color:var(--n-color-text)}.n-ms-chip-remove:disabled{opacity:0.5;cursor:not-allowed}.n-ms-more{font-size:var(--n-text-xs);color:var(--n-color-text-muted)}.n-ms-dropdown{position:absolute;top:calc(100% + 0.5rem);left:0;width:100%;background:var(--n-color-surface);border:1px solid var(--n-color-border);border-radius:var(--n-radius-md);box-shadow:var(--n-shadow-lg);z-index:var(--n-z-dropdown);overflow:hidden;animation:n-ms-in .2s cubic-bezier(0,1,0,1)}@keyframes n-ms-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.n-ms-dropdown.is-top{animation:n-ms-in-top .2s cubic-bezier(0,1,0,1)}@keyframes n-ms-in-top{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.n-ms-search{padding:var(--n-space-2);border-bottom:1px solid var(--n-color-border)}.n-ms-search-input{width:100%;background:var(--n-color-bg);border:1px solid var(--n-color-border);border-radius:var(--n-radius-sm);padding:var(--n-space-2) var(--n-space-3);color:var(--n-color-text);font-size:var(--n-text-sm);outline:none;font-family:inherit}.n-ms-search-input:focus{border-color:var(--n-color-primary)}.n-ms-options{max-height:260px;overflow-y:auto}.n-ms-option{width:100%;display:flex;align-items:center;gap:0.5rem;padding:0.7rem 1rem;background:transparent;border:none;color:var(--n-color-text-secondary);cursor:pointer;transition:all var(--n-transition-fast);text-align:left}.n-ms-option:hover:not(:disabled),.n-ms-option.is-focused{background:var(--n-color-glass);color:var(--n-color-text)}.n-ms-option.is-selected{background:var(--n-color-primary-light);color:var(--n-color-primary);font-weight:var(--n-weight-semibold)}.n-ms-option:disabled,.n-ms-option.is-disabled{opacity:0.4;cursor:not-allowed}.n-ms-check{width:1.25rem;display:inline-flex;align-items:center;justify-content:center;font-size:var(--n-text-xs)}.n-ms-empty{padding:var(--n-space-4);color:var(--n-color-text-muted);text-align:center;font-size:var(--n-text-sm)}.is-disabled .n-ms-trigger{opacity:0.5;cursor:not-allowed}`
|
|
165
|
+
injectStyle('data-v-261608b5', __style)
|
|
@@ -65,10 +65,10 @@ onBeforeUnmount(() => close())
|
|
|
65
65
|
<div class="n-ms-trigger" role="combobox" tabindex="0" :aria-expanded="isOpen.value" @click="toggleOpen" @keydown="onKeydown">
|
|
66
66
|
<div v-if="selectedLabels.value.length > 0" class="n-ms-chips"><div v-for="c in selectedLabels.value.slice(0, maxChips)" :key="String(c.value)" class="n-ms-chip"><span class="n-ms-chip-label">{{ c.label }}</span><button type="button" class="n-ms-chip-remove" aria-label="Remove" tabindex="-1" :disabled="effectiveDisabled.value" @click="removeChip(c.value, $event)">✕</button></div><span v-if="selectedLabels.value.length > maxChips" class="n-ms-more">+{{ selectedLabels.value.length - maxChips }}</span></div>
|
|
67
67
|
<span v-else class="n-ms-placeholder">{{ placeholder }}</span>
|
|
68
|
-
<div class="n-ms-actions"><button v-if="clearable && selectedLabels.value.length > 0" type="button" class="n-ms-clear" tabindex="-1" @click.stop="clear"
|
|
68
|
+
<div class="n-ms-actions"><button v-if="clearable && selectedLabels.value.length > 0" type="button" class="n-ms-clear" tabindex="-1" @click.stop="clear" aria-label="Clear"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" focusable="false" aria-hidden="true"><path d="M18 6L6 18"/><path d="M6 6l12 12"/></svg></button><span class="n-ms-arrow"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" focusable="false" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg></span></div>
|
|
69
69
|
</div>
|
|
70
|
-
<div v-if="isOpen.value && appendTo !== 'body'" class="n-ms-dropdown"><div v-if="searchable" class="n-ms-search"><input class="n-ms-search-input" :value="queryDraft.value" placeholder="Search..." @input="onSearchInput" @keydown.stop="onKeydown" /></div><div class="n-ms-options"><button v-for="(opt, i) in filteredOptions.value" :key="String(opt.value) + ':' + i" type="button" class="n-ms-option" :data-ms-opt="String(opt.value)" :class="{ 'is-selected': selectedSet.value.has(opt.value), 'is-focused': i === focusedIndex.value, 'is-disabled': opt.disabled }" :disabled="opt.disabled" @mouseenter="focusedIndex.value = i" @click="toggleValue(opt.value)"><span class="n-ms-check"
|
|
71
|
-
<Teleport to="body"><div v-if="isOpen.value && appendTo === 'body'" class="n-ms-dropdown" :class="{ 'is-top': resolvedPlacement.value === 'top' }" :data-ms-popup="instanceId" :style="popupStyle.value"><div v-if="searchable" class="n-ms-search"><input class="n-ms-search-input" :value="queryDraft.value" placeholder="Search..." @input="onSearchInput" @keydown.stop="onKeydown" /></div><div class="n-ms-options"><button v-for="(opt, i) in filteredOptions.value" :key="String(opt.value) + ':' + i" type="button" class="n-ms-option" :data-ms-opt="String(opt.value)" :class="{ 'is-selected': selectedSet.value.has(opt.value), 'is-focused': i === focusedIndex.value, 'is-disabled': opt.disabled }" :disabled="opt.disabled" @mouseenter="focusedIndex.value = i" @click="toggleValue(opt.value)"><span class="n-ms-check"
|
|
70
|
+
<div v-if="isOpen.value && appendTo !== 'body'" class="n-ms-dropdown"><div v-if="searchable" class="n-ms-search"><input class="n-ms-search-input" :value="queryDraft.value" placeholder="Search..." @input="onSearchInput" @keydown.stop="onKeydown" /></div><div class="n-ms-options"><button v-for="(opt, i) in filteredOptions.value" :key="String(opt.value) + ':' + i" type="button" class="n-ms-option" :data-ms-opt="String(opt.value)" :class="{ 'is-selected': selectedSet.value.has(opt.value), 'is-focused': i === focusedIndex.value, 'is-disabled': opt.disabled }" :disabled="opt.disabled" @mouseenter="focusedIndex.value = i" @click="toggleValue(opt.value)"><span class="n-ms-check"><svg v-if="selectedSet.value.has(opt.value)" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" focusable="false" aria-hidden="true"><path d="M20 6L9 17l-5-5"/></svg></span><span class="n-ms-option-label">{{ opt.label }}</span></button><div v-if="filteredOptions.value.length === 0" class="n-ms-empty">No options</div></div></div>
|
|
71
|
+
<Teleport to="body"><div v-if="isOpen.value && appendTo === 'body'" class="n-ms-dropdown" :class="{ 'is-top': resolvedPlacement.value === 'top' }" :data-ms-popup="instanceId" :style="popupStyle.value"><div v-if="searchable" class="n-ms-search"><input class="n-ms-search-input" :value="queryDraft.value" placeholder="Search..." @input="onSearchInput" @keydown.stop="onKeydown" /></div><div class="n-ms-options"><button v-for="(opt, i) in filteredOptions.value" :key="String(opt.value) + ':' + i" type="button" class="n-ms-option" :data-ms-opt="String(opt.value)" :class="{ 'is-selected': selectedSet.value.has(opt.value), 'is-focused': i === focusedIndex.value, 'is-disabled': opt.disabled }" :disabled="opt.disabled" @mouseenter="focusedIndex.value = i" @click="toggleValue(opt.value)"><span class="n-ms-check"><svg v-if="selectedSet.value.has(opt.value)" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" focusable="false" aria-hidden="true"><path d="M20 6L9 17l-5-5"/></svg></span><span class="n-ms-option-label">{{ opt.label }}</span></button><div v-if="filteredOptions.value.length === 0" class="n-ms-empty">No options</div></div></div></Teleport>
|
|
72
72
|
</div>
|
|
73
73
|
</template>
|
|
74
74
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { computed, h, hText, effect, defineComponent, registerComponent, reloadComponent, injectStyle } from 'nexa-framework'
|
|
2
2
|
|
|
3
3
|
const _sfc_main = defineComponent({
|
|
4
|
-
__scopeId: 'data-v-
|
|
4
|
+
__scopeId: 'data-v-2f8f305d',
|
|
5
5
|
__hmrId: 'NPaginator_nexa',
|
|
6
6
|
props: {
|
|
7
7
|
first: { type: Number, default: 0 },
|
|
@@ -52,11 +52,11 @@ const _sfc_main = defineComponent({
|
|
|
52
52
|
// Injected render function
|
|
53
53
|
_sfc_main.render = function(ctx) {
|
|
54
54
|
let { safeFirst, safeRows, page, pageCount, canPrev, canNext, goToPage, prev, next, firstPage, lastPage, changeRows, start, end, $slots, emit, first, rows, totalRecords, rowsPerPageOptions, Fragment: _ntc_Fragment } = ctx
|
|
55
|
-
return h('div', { class: "n-paginator", "data-v-
|
|
55
|
+
return h('div', { class: "n-paginator", "data-v-2f8f305d": "" }, [
|
|
56
56
|
"\n ",
|
|
57
|
-
h('div', { class: "n-paginator-left", "data-v-
|
|
57
|
+
h('div', { class: "n-paginator-left", "data-v-2f8f305d": "" }, [
|
|
58
58
|
"\n ",
|
|
59
|
-
h('span', { class: "n-paginator-report", "data-v-
|
|
59
|
+
h('span', { class: "n-paginator-report", "data-v-2f8f305d": "" }, [
|
|
60
60
|
start.value,
|
|
61
61
|
"-",
|
|
62
62
|
end.value,
|
|
@@ -66,38 +66,46 @@ _sfc_main.render = function(ctx) {
|
|
|
66
66
|
"\n "
|
|
67
67
|
]),
|
|
68
68
|
"\n ",
|
|
69
|
-
h('div', { class: "n-paginator-center", "data-v-
|
|
69
|
+
h('div', { class: "n-paginator-center", "data-v-2f8f305d": "" }, [
|
|
70
70
|
"\n ",
|
|
71
|
-
h('button', { class: "n-pg-btn", type: "button", disabled: !canPrev.value, onClick: firstPage, "data-v-
|
|
72
|
-
"
|
|
71
|
+
h('button', { class: "n-pg-btn", type: "button", disabled: !canPrev.value, onClick: firstPage, "aria-label": "First page", "data-v-2f8f305d": "" }, [
|
|
72
|
+
h('svg', { viewBox: "0 0 24 24", width: "14", height: "14", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", focusable: "false", "aria-hidden": "true", "data-v-2f8f305d": "" }, [
|
|
73
|
+
h('path', { d: "M11 17l-5-5 5-5M18 17l-5-5 5-5", "data-v-2f8f305d": "" })
|
|
74
|
+
])
|
|
73
75
|
]),
|
|
74
76
|
"\n ",
|
|
75
|
-
h('button', { class: "n-pg-btn", type: "button", disabled: !canPrev.value, onClick: prev, "data-v-
|
|
76
|
-
"
|
|
77
|
+
h('button', { class: "n-pg-btn", type: "button", disabled: !canPrev.value, onClick: prev, "aria-label": "Previous page", "data-v-2f8f305d": "" }, [
|
|
78
|
+
h('svg', { viewBox: "0 0 24 24", width: "14", height: "14", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", focusable: "false", "aria-hidden": "true", "data-v-2f8f305d": "" }, [
|
|
79
|
+
h('path', { d: "M15 18l-6-6 6-6", "data-v-2f8f305d": "" })
|
|
80
|
+
])
|
|
77
81
|
]),
|
|
78
82
|
"\n ",
|
|
79
|
-
h('span', { class: "n-pg-page", "data-v-
|
|
83
|
+
h('span', { class: "n-pg-page", "data-v-2f8f305d": "" }, [
|
|
80
84
|
page.value + 1,
|
|
81
85
|
" / ",
|
|
82
86
|
pageCount.value
|
|
83
87
|
]),
|
|
84
88
|
"\n ",
|
|
85
|
-
h('button', { class: "n-pg-btn", type: "button", disabled: !canNext.value, onClick: next, "data-v-
|
|
86
|
-
"
|
|
89
|
+
h('button', { class: "n-pg-btn", type: "button", disabled: !canNext.value, onClick: next, "aria-label": "Next page", "data-v-2f8f305d": "" }, [
|
|
90
|
+
h('svg', { viewBox: "0 0 24 24", width: "14", height: "14", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", focusable: "false", "aria-hidden": "true", "data-v-2f8f305d": "" }, [
|
|
91
|
+
h('path', { d: "M9 18l6-6-6-6", "data-v-2f8f305d": "" })
|
|
92
|
+
])
|
|
87
93
|
]),
|
|
88
94
|
"\n ",
|
|
89
|
-
h('button', { class: "n-pg-btn", type: "button", disabled: !canNext.value, onClick: lastPage, "data-v-
|
|
90
|
-
"
|
|
95
|
+
h('button', { class: "n-pg-btn", type: "button", disabled: !canNext.value, onClick: lastPage, "aria-label": "Last page", "data-v-2f8f305d": "" }, [
|
|
96
|
+
h('svg', { viewBox: "0 0 24 24", width: "14", height: "14", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", focusable: "false", "aria-hidden": "true", "data-v-2f8f305d": "" }, [
|
|
97
|
+
h('path', { d: "M13 17l5-5-5-5M6 17l5-5-5-5", "data-v-2f8f305d": "" })
|
|
98
|
+
])
|
|
91
99
|
]),
|
|
92
100
|
"\n "
|
|
93
101
|
]),
|
|
94
102
|
"\n ",
|
|
95
|
-
h('div', { class: "n-paginator-right", "data-v-
|
|
103
|
+
h('div', { class: "n-paginator-right", "data-v-2f8f305d": "" }, [
|
|
96
104
|
"\n ",
|
|
97
|
-
h('select', { class: "n-pg-select", value: rows, onChange: changeRows, "data-v-
|
|
105
|
+
h('select', { class: "n-pg-select", value: rows, onChange: changeRows, "data-v-2f8f305d": "" }, [
|
|
98
106
|
"\n ",
|
|
99
107
|
(rowsPerPageOptions).map((n, index) =>
|
|
100
|
-
h('option', { key: n, value: n, "data-v-
|
|
108
|
+
h('option', { key: n, value: n, "data-v-2f8f305d": "" }, [
|
|
101
109
|
n
|
|
102
110
|
])
|
|
103
111
|
),
|
|
@@ -108,10 +116,10 @@ _sfc_main.render = function(ctx) {
|
|
|
108
116
|
"\n "
|
|
109
117
|
])
|
|
110
118
|
}
|
|
111
|
-
_sfc_main.__scopeId = 'data-v-
|
|
119
|
+
_sfc_main.__scopeId = 'data-v-2f8f305d'
|
|
112
120
|
_sfc_main.__hmrId = 'NPaginator_nexa'
|
|
113
121
|
|
|
114
122
|
export default _sfc_main
|
|
115
123
|
|
|
116
|
-
const __style = `.n-paginator[data-v-
|
|
117
|
-
injectStyle('data-v-
|
|
124
|
+
const __style = `.n-paginator[data-v-2f8f305d]{display:flex;align-items:center;justify-content:space-between;gap:var(--n-space-3);padding:var(--n-space-3) var(--n-space-4);border-top:1px solid var(--n-color-border);background:var(--n-color-surface);font-family:var(--n-font-sans)}.n-paginator-report{color:var(--n-color-text-muted);font-size:var(--n-text-xs)}.n-paginator-center{display:flex;align-items:center;gap:0.35rem}.n-pg-btn{background:transparent;border:1px solid var(--n-color-border);color:var(--n-color-text);border-radius:var(--n-radius-sm);padding:0.25rem 0.5rem;cursor:pointer;transition:all var(--n-transition-fast)}.n-pg-btn:hover:not(:disabled){background:var(--n-color-glass)}.n-pg-btn:disabled{opacity:0.5;cursor:not-allowed}.n-pg-page{min-width:5rem;text-align:center;color:var(--n-color-text-secondary);font-size:var(--n-text-xs)}.n-pg-select{background:var(--n-color-bg);border:1px solid var(--n-color-border);color:var(--n-color-text);border-radius:var(--n-radius-sm);padding:0.25rem 0.5rem;font-size:var(--n-text-xs);outline:none}`
|
|
125
|
+
injectStyle('data-v-2f8f305d', __style)
|
|
@@ -58,11 +58,11 @@ const end = computed(() => Math.min((safeFirst.value || 0) + (safeRows.value ||
|
|
|
58
58
|
<span class="n-paginator-report">{{ start.value }}-{{ end.value }} of {{ totalRecords }}</span>
|
|
59
59
|
</div>
|
|
60
60
|
<div class="n-paginator-center">
|
|
61
|
-
<button type="button" class="n-pg-btn" :disabled="!canPrev.value" @click="firstPage"
|
|
62
|
-
<button type="button" class="n-pg-btn" :disabled="!canPrev.value" @click="prev"
|
|
61
|
+
<button type="button" class="n-pg-btn" :disabled="!canPrev.value" @click="firstPage" aria-label="First page"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" focusable="false" aria-hidden="true"><path d="M11 17l-5-5 5-5M18 17l-5-5 5-5"/></svg></button>
|
|
62
|
+
<button type="button" class="n-pg-btn" :disabled="!canPrev.value" @click="prev" aria-label="Previous page"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" focusable="false" aria-hidden="true"><path d="M15 18l-6-6 6-6"/></svg></button>
|
|
63
63
|
<span class="n-pg-page">{{ page.value + 1 }} / {{ pageCount.value }}</span>
|
|
64
|
-
<button type="button" class="n-pg-btn" :disabled="!canNext.value" @click="next"
|
|
65
|
-
<button type="button" class="n-pg-btn" :disabled="!canNext.value" @click="lastPage"
|
|
64
|
+
<button type="button" class="n-pg-btn" :disabled="!canNext.value" @click="next" aria-label="Next page"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" focusable="false" aria-hidden="true"><path d="M9 18l6-6-6-6"/></svg></button>
|
|
65
|
+
<button type="button" class="n-pg-btn" :disabled="!canNext.value" @click="lastPage" aria-label="Last page"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" focusable="false" aria-hidden="true"><path d="M13 17l5-5-5-5M6 17l5-5-5-5"/></svg></button>
|
|
66
66
|
</div>
|
|
67
67
|
<div class="n-paginator-right">
|
|
68
68
|
<select class="n-pg-select" :value="rows" @change="changeRows">
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { signal, computed, h, hText, effect, defineComponent, registerComponent, reloadComponent, injectStyle } from 'nexa-framework'
|
|
2
2
|
|
|
3
3
|
const _sfc_main = defineComponent({
|
|
4
|
-
__scopeId: 'data-v-
|
|
4
|
+
__scopeId: 'data-v-2460271c',
|
|
5
5
|
__hmrId: 'NPassword_nexa',
|
|
6
6
|
props: {
|
|
7
7
|
modelValue: { type: String, default: '' },
|
|
@@ -99,59 +99,73 @@ const _sfc_main = defineComponent({
|
|
|
99
99
|
// Injected render function
|
|
100
100
|
_sfc_main.render = function(ctx) {
|
|
101
101
|
let { instanceId, inputId, masked, type, hasValue, requirements, strength, internalError, errorMessage, ariaInvalid, describedBy, onInput, clear, toggle, $slots, emit, modelValue, placeholder, label, error, disabled, readonly, name, autocomplete, id, clearable, toggleMask, showStrength, validate, showRequirements, minLength, requireLower, requireUpper, requireNumber, requireSpecial, Fragment: _ntc_Fragment } = ctx
|
|
102
|
-
return h('div', { class: "n-password", "data-v-
|
|
102
|
+
return h('div', { class: "n-password", "data-v-2460271c": "" }, [
|
|
103
103
|
"\n ",
|
|
104
|
-
(label) ? h('label', { class: "n-password-label", for: inputId.value, "data-v-
|
|
104
|
+
(label) ? h('label', { class: "n-password-label", for: inputId.value, "data-v-2460271c": "" }, [
|
|
105
105
|
label
|
|
106
106
|
]) : null,
|
|
107
|
-
h('div', { class: ["n-password-wrapper", { 'has-error': !!errorMessage.value, 'is-disabled': disabled }], "data-v-
|
|
107
|
+
h('div', { class: ["n-password-wrapper", { 'has-error': !!errorMessage.value, 'is-disabled': disabled }], "data-v-2460271c": "" }, [
|
|
108
108
|
"\n ",
|
|
109
|
-
h('input', { class: "n-password-input", id: inputId.value, name: name || undefined, type: type.value, value: modelValue, placeholder: placeholder, disabled: disabled, readonly: readonly, autocomplete: autocomplete, "aria-invalid": ariaInvalid.value, "aria-describedby": describedBy.value, onInput: onInput, "data-v-
|
|
109
|
+
h('input', { class: "n-password-input", id: inputId.value, name: name || undefined, type: type.value, value: modelValue, placeholder: placeholder, disabled: disabled, readonly: readonly, autocomplete: autocomplete, "aria-invalid": ariaInvalid.value, "aria-describedby": describedBy.value, onInput: onInput, "data-v-2460271c": "" }),
|
|
110
110
|
"\n ",
|
|
111
|
-
h('div', { class: "n-password-actions", "data-v-
|
|
111
|
+
h('div', { class: "n-password-actions", "data-v-2460271c": "" }, [
|
|
112
112
|
"\n ",
|
|
113
|
-
(clearable && modelValue) ? h('button', { class: "n-password-action", type: "button", disabled: disabled || readonly, "aria-label": "Limpiar", onClick: clear, "data-v-
|
|
114
|
-
"
|
|
113
|
+
(clearable && modelValue) ? h('button', { class: "n-password-action", type: "button", disabled: disabled || readonly, "aria-label": "Limpiar", onClick: clear, "data-v-2460271c": "" }, [
|
|
114
|
+
h('svg', { viewBox: "0 0 24 24", width: "14", height: "14", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", focusable: "false", "aria-hidden": "true", "data-v-2460271c": "" }, [
|
|
115
|
+
h('path', { d: "M18 6L6 18", "data-v-2460271c": "" }),
|
|
116
|
+
h('path', { d: "M6 6l12 12", "data-v-2460271c": "" })
|
|
117
|
+
])
|
|
115
118
|
]) : null,
|
|
116
|
-
(toggleMask) ? h('button', { class: "n-password-action", type: "button", "aria-pressed": (!masked.value).toString(), disabled: disabled, "aria-label": masked.value ? 'Mostrar contraseña' : 'Ocultar contraseña', onClick: toggle, "data-v-
|
|
119
|
+
(toggleMask) ? h('button', { class: "n-password-action", type: "button", "aria-pressed": (!masked.value).toString(), disabled: disabled, "aria-label": masked.value ? 'Mostrar contraseña' : 'Ocultar contraseña', onClick: toggle, "data-v-2460271c": "" }, [
|
|
117
120
|
"\n ",
|
|
118
|
-
masked.value ? '
|
|
121
|
+
(masked.value) ? h('svg', { viewBox: "0 0 24 24", width: "16", height: "16", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", focusable: "false", "aria-hidden": "true", "data-v-2460271c": "" }, [
|
|
122
|
+
h('path', { d: "M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z", "data-v-2460271c": "" }),
|
|
123
|
+
h('circle', { cx: "12", cy: "12", r: "3", "data-v-2460271c": "" })
|
|
124
|
+
]) : (true) ? h('svg', { viewBox: "0 0 24 24", width: "16", height: "16", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", focusable: "false", "aria-hidden": "true", "data-v-2460271c": "" }, [
|
|
125
|
+
h('path', { d: "M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z", "data-v-2460271c": "" }),
|
|
126
|
+
h('circle', { cx: "12", cy: "12", r: "3", "data-v-2460271c": "" }),
|
|
127
|
+
h('path', { d: "M23 1L1 23", "data-v-2460271c": "" })
|
|
128
|
+
]) : null,
|
|
119
129
|
"\n "
|
|
120
130
|
]) : null
|
|
121
131
|
]),
|
|
122
132
|
"\n "
|
|
123
133
|
]),
|
|
124
134
|
"\n\n ",
|
|
125
|
-
(errorMessage.value) ? h('div', { class: "n-password-error", id: inputId.value + '-error', role: "alert", "data-v-
|
|
135
|
+
(errorMessage.value) ? h('div', { class: "n-password-error", id: inputId.value + '-error', role: "alert", "data-v-2460271c": "" }, [
|
|
126
136
|
"\n ",
|
|
127
137
|
errorMessage.value,
|
|
128
138
|
"\n "
|
|
129
139
|
]) : null,
|
|
130
|
-
(showStrength && modelValue) ? h('div', { class: "n-password-strength", id: inputId.value + '-strength', "data-v-
|
|
140
|
+
(showStrength && modelValue) ? h('div', { class: "n-password-strength", id: inputId.value + '-strength', "data-v-2460271c": "" }, [
|
|
131
141
|
"\n ",
|
|
132
|
-
h('div', { class: "n-password-meter", role: "progressbar", "aria-valuemin": 0, "aria-valuemax": 4, "aria-valuenow": strength.value.score, "aria-label": 'Fuerza de contraseña: ' + strength.value.label, "data-v-
|
|
142
|
+
h('div', { class: "n-password-meter", role: "progressbar", "aria-valuemin": 0, "aria-valuemax": 4, "aria-valuenow": strength.value.score, "aria-label": 'Fuerza de contraseña: ' + strength.value.label, "data-v-2460271c": "" }, [
|
|
133
143
|
"\n ",
|
|
134
144
|
([1, 2, 3, 4]).map((n, index) =>
|
|
135
|
-
h('span', { class: ["n-password-meter-seg", { 'is-on': n <= strength.value.score }], key: n, "data-v-
|
|
145
|
+
h('span', { class: ["n-password-meter-seg", { 'is-on': n <= strength.value.score }], key: n, "data-v-2460271c": "" })
|
|
136
146
|
),
|
|
137
147
|
"\n "
|
|
138
148
|
]),
|
|
139
149
|
"\n ",
|
|
140
|
-
h('span', { class: "n-password-strength-label", "data-v-
|
|
150
|
+
h('span', { class: "n-password-strength-label", "data-v-2460271c": "" }, [
|
|
141
151
|
strength.value.label
|
|
142
152
|
]),
|
|
143
153
|
"\n "
|
|
144
154
|
]) : null,
|
|
145
|
-
(showRequirements && validate && modelValue) ? h('ul', { class: "n-password-req", id: inputId.value + '-requirements', "data-v-
|
|
155
|
+
(showRequirements && validate && modelValue) ? h('ul', { class: "n-password-req", id: inputId.value + '-requirements', "data-v-2460271c": "" }, [
|
|
146
156
|
"\n ",
|
|
147
157
|
(requirements.value).map((r, index) =>
|
|
148
|
-
h('li', { class: ["n-password-req-item", { 'is-ok': r.ok }], key: r.key, "data-v-
|
|
158
|
+
h('li', { class: ["n-password-req-item", { 'is-ok': r.ok }], key: r.key, "data-v-2460271c": "" }, [
|
|
149
159
|
"\n ",
|
|
150
|
-
h('span', { class: "n-password-req-icon", "data-v-
|
|
151
|
-
r.ok ? '
|
|
160
|
+
h('span', { class: "n-password-req-icon", "data-v-2460271c": "" }, [
|
|
161
|
+
(r.ok) ? h('svg', { viewBox: "0 0 24 24", width: "12", height: "12", fill: "none", stroke: "currentColor", "stroke-width": "3", "stroke-linecap": "round", "stroke-linejoin": "round", focusable: "false", "aria-hidden": "true", "data-v-2460271c": "" }, [
|
|
162
|
+
h('path', { d: "M20 6L9 17l-5-5", "data-v-2460271c": "" })
|
|
163
|
+
]) : (true) ? h('svg', { viewBox: "0 0 24 24", width: "12", height: "12", fill: "currentColor", focusable: "false", "aria-hidden": "true", "data-v-2460271c": "" }, [
|
|
164
|
+
h('circle', { cx: "12", cy: "12", r: "4", "data-v-2460271c": "" })
|
|
165
|
+
]) : null
|
|
152
166
|
]),
|
|
153
167
|
"\n ",
|
|
154
|
-
h('span', { "data-v-
|
|
168
|
+
h('span', { "data-v-2460271c": "" }, [
|
|
155
169
|
r.label
|
|
156
170
|
]),
|
|
157
171
|
"\n "
|
|
@@ -161,33 +175,33 @@ _sfc_main.render = function(ctx) {
|
|
|
161
175
|
]) : null
|
|
162
176
|
])
|
|
163
177
|
}
|
|
164
|
-
_sfc_main.__scopeId = 'data-v-
|
|
178
|
+
_sfc_main.__scopeId = 'data-v-2460271c'
|
|
165
179
|
_sfc_main.__hmrId = 'NPassword_nexa'
|
|
166
180
|
|
|
167
181
|
export default _sfc_main
|
|
168
182
|
|
|
169
|
-
const __style = `.n-password[data-v-
|
|
170
|
-
.n-password-label[data-v-
|
|
171
|
-
.n-password-wrapper[data-v-
|
|
172
|
-
.n-password-wrapper[data-v-
|
|
173
|
-
.n-password-wrapper.has-error[data-v-
|
|
174
|
-
.n-password-wrapper.has-error[data-v-
|
|
175
|
-
.n-password-input[data-v-
|
|
176
|
-
.n-password-input[data-v-
|
|
177
|
-
.n-password-actions[data-v-
|
|
178
|
-
.n-password-action[data-v-
|
|
179
|
-
.n-password-action[data-v-
|
|
180
|
-
.n-password-action[data-v-
|
|
181
|
-
.n-password-error[data-v-
|
|
182
|
-
.n-password-strength[data-v-
|
|
183
|
-
.n-password-meter[data-v-
|
|
184
|
-
.n-password-meter-seg[data-v-
|
|
185
|
-
.n-password-meter-seg.is-on[data-v-
|
|
186
|
-
.n-password-strength-label[data-v-
|
|
187
|
-
.n-password-req[data-v-
|
|
188
|
-
.n-password-req-item[data-v-
|
|
189
|
-
.n-password-req-item.is-ok[data-v-
|
|
190
|
-
.n-password-req-icon[data-v-
|
|
191
|
-
.n-password-wrapper.is-disabled[data-v-
|
|
192
|
-
.n-password-wrapper.is-disabled .n-password-input[data-v-
|
|
193
|
-
injectStyle('data-v-
|
|
183
|
+
const __style = `.n-password[data-v-2460271c]{ display:flex; flex-direction:column; gap: var(--n-space-2); width:100%; font-family: var(--n-font-sans); }
|
|
184
|
+
.n-password-label[data-v-2460271c]{ font-size: var(--n-text-sm); font-weight: var(--n-weight-semibold); color: var(--n-color-text-secondary); margin-left: var(--n-space-1); }
|
|
185
|
+
.n-password-wrapper[data-v-2460271c]{ position:relative; display:flex; align-items:center; background: var(--n-color-bg); border: 1px solid var(--n-color-border); border-radius: var(--n-radius-md); transition: all var(--n-transition-normal); }
|
|
186
|
+
.n-password-wrapper[data-v-2460271c]:focus-within{ border-color: var(--n-color-primary); box-shadow: 0 0 0 3px var(--n-color-primary-light); background: var(--n-color-surface); }
|
|
187
|
+
.n-password-wrapper.has-error[data-v-2460271c]{ border-color: var(--n-color-danger); }
|
|
188
|
+
.n-password-wrapper.has-error[data-v-2460271c]:focus-within{ box-shadow: 0 0 0 3px var(--n-color-danger-light); }
|
|
189
|
+
.n-password-input[data-v-2460271c]{ width:100%; background:transparent; border:none; outline:none; color: var(--n-color-text); padding: 0.75rem 2.75rem 0.75rem 1rem; font-size: var(--n-text-base); font-family: inherit; }
|
|
190
|
+
.n-password-input[data-v-2460271c]::placeholder{ color: var(--n-color-text-muted); }
|
|
191
|
+
.n-password-actions[data-v-2460271c]{ position:absolute; right: 0.5rem; display:flex; align-items:center; gap: 0.15rem; }
|
|
192
|
+
.n-password-action[data-v-2460271c]{ background:transparent; border:none; color: var(--n-color-text-muted); cursor:pointer; padding: 0.25rem; border-radius: var(--n-radius-sm); transition: all var(--n-transition-fast); line-height: 1; display:flex; align-items:center; }
|
|
193
|
+
.n-password-action[data-v-2460271c]:hover:not(:disabled){ color: var(--n-color-text); background: var(--n-color-glass); }
|
|
194
|
+
.n-password-action[data-v-2460271c]:disabled{ opacity: 0.5; cursor: not-allowed; }
|
|
195
|
+
.n-password-error[data-v-2460271c]{ font-size: var(--n-text-xs); color: var(--n-color-danger); padding: 0 var(--n-space-1); }
|
|
196
|
+
.n-password-strength[data-v-2460271c]{ display:flex; align-items:center; gap: var(--n-space-2); padding: 0 var(--n-space-1); }
|
|
197
|
+
.n-password-meter[data-v-2460271c]{ display:grid; grid-template-columns: repeat(4, 1fr); gap: 4px; width: 120px; }
|
|
198
|
+
.n-password-meter-seg[data-v-2460271c]{ height: 6px; border-radius: var(--n-radius-full); background: var(--n-color-border); transition: background var(--n-transition-fast); }
|
|
199
|
+
.n-password-meter-seg.is-on[data-v-2460271c]{ background: var(--n-color-primary); }
|
|
200
|
+
.n-password-strength-label[data-v-2460271c]{ font-size: var(--n-text-xs); color: var(--n-color-text-muted); }
|
|
201
|
+
.n-password-req[data-v-2460271c]{ list-style:none; padding: 0 var(--n-space-1); margin: 0; display:flex; flex-direction:column; gap: 0.25rem; }
|
|
202
|
+
.n-password-req-item[data-v-2460271c]{ display:flex; gap: var(--n-space-2); align-items:flex-start; font-size: var(--n-text-xs); color: var(--n-color-text-muted); }
|
|
203
|
+
.n-password-req-item.is-ok[data-v-2460271c]{ color: var(--n-color-success); }
|
|
204
|
+
.n-password-req-icon[data-v-2460271c]{ width: 14px; display:inline-flex; justify-content:center; flex-shrink:0; }
|
|
205
|
+
.n-password-wrapper.is-disabled[data-v-2460271c]{ opacity: 0.5; cursor: not-allowed; background: var(--n-color-surface-alt); }
|
|
206
|
+
.n-password-wrapper.is-disabled .n-password-input[data-v-2460271c]{ cursor: not-allowed; }`
|
|
207
|
+
injectStyle('data-v-2460271c', __style)
|
|
@@ -123,9 +123,10 @@ const toggle = (e) => {
|
|
|
123
123
|
@input="onInput"
|
|
124
124
|
/>
|
|
125
125
|
<div class="n-password-actions">
|
|
126
|
-
<button v-if="clearable && modelValue" type="button" class="n-password-action" :disabled="disabled || readonly" aria-label="Limpiar" @click="clear"
|
|
126
|
+
<button v-if="clearable && modelValue" type="button" class="n-password-action" :disabled="disabled || readonly" aria-label="Limpiar" @click="clear"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" focusable="false" aria-hidden="true"><path d="M18 6L6 18"/><path d="M6 6l12 12"/></svg></button>
|
|
127
127
|
<button v-if="toggleMask" type="button" class="n-password-action" :aria-pressed="(!masked.value).toString()" :disabled="disabled" :aria-label="masked.value ? 'Mostrar contraseña' : 'Ocultar contraseña'" @click="toggle">
|
|
128
|
-
|
|
128
|
+
<svg v-if="masked.value" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" focusable="false" aria-hidden="true"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>
|
|
129
|
+
<svg v-else viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" focusable="false" aria-hidden="true"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/><path d="M23 1L1 23"/></svg>
|
|
129
130
|
</button>
|
|
130
131
|
</div>
|
|
131
132
|
</div>
|
|
@@ -143,7 +144,7 @@ const toggle = (e) => {
|
|
|
143
144
|
|
|
144
145
|
<ul v-if="showRequirements && validate && modelValue" class="n-password-req" :id="inputId.value + '-requirements'">
|
|
145
146
|
<li v-for="r in requirements.value" :key="r.key" class="n-password-req-item" :class="{ 'is-ok': r.ok }">
|
|
146
|
-
<span class="n-password-req-icon"
|
|
147
|
+
<span class="n-password-req-icon"><svg v-if="r.ok" viewBox="0 0 24 24" width="12" height="12" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" focusable="false" aria-hidden="true"><path d="M20 6L9 17l-5-5"/></svg><svg v-else viewBox="0 0 24 24" width="12" height="12" fill="currentColor" focusable="false" aria-hidden="true"><circle cx="12" cy="12" r="4"/></svg></span>
|
|
147
148
|
<span>{{ r.label }}</span>
|
|
148
149
|
</li>
|
|
149
150
|
</ul>
|
|
@@ -156,7 +157,7 @@ const toggle = (e) => {
|
|
|
156
157
|
.n-password-wrapper { position:relative; display:flex; align-items:center; background: var(--n-color-bg); border: 1px solid var(--n-color-border); border-radius: var(--n-radius-md); transition: all var(--n-transition-normal); }
|
|
157
158
|
.n-password-wrapper:focus-within { border-color: var(--n-color-primary); box-shadow: 0 0 0 3px var(--n-color-primary-light); background: var(--n-color-surface); }
|
|
158
159
|
.n-password-wrapper.has-error { border-color: var(--n-color-danger); }
|
|
159
|
-
.n-password-wrapper.has-error:focus-within { box-shadow: 0 0 0 3px
|
|
160
|
+
.n-password-wrapper.has-error:focus-within { box-shadow: 0 0 0 3px var(--n-color-danger-light); }
|
|
160
161
|
.n-password-input { width:100%; background:transparent; border:none; outline:none; color: var(--n-color-text); padding: 0.75rem 2.75rem 0.75rem 1rem; font-size: var(--n-text-base); font-family: inherit; }
|
|
161
162
|
.n-password-input::placeholder { color: var(--n-color-text-muted); }
|
|
162
163
|
.n-password-actions { position:absolute; right: 0.5rem; display:flex; align-items:center; gap: 0.15rem; }
|
|
@@ -67,7 +67,7 @@ const __style = `.n-progress[data-v-daaa1d0]{
|
|
|
67
67
|
.n-progress-bar[data-v-daaa1d0]{
|
|
68
68
|
height: 100%;
|
|
69
69
|
border-radius: var(--n-radius-full);
|
|
70
|
-
transition: width
|
|
70
|
+
transition: width var(--n-transition-slow);
|
|
71
71
|
display: flex;
|
|
72
72
|
align-items: center;
|
|
73
73
|
justify-content: flex-end;
|
|
@@ -105,11 +105,11 @@ const __style = `.n-progress[data-v-daaa1d0]{
|
|
|
105
105
|
.is-striped .n-progress-bar[data-v-daaa1d0]{
|
|
106
106
|
background-image: linear-gradient(
|
|
107
107
|
45deg,
|
|
108
|
-
|
|
108
|
+
var(--n-color-stripe) 25%,
|
|
109
109
|
transparent 25%,
|
|
110
110
|
transparent 50%,
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
var(--n-color-stripe) 50%,
|
|
112
|
+
var(--n-color-stripe) 75%,
|
|
113
113
|
transparent 75%,
|
|
114
114
|
transparent
|
|
115
115
|
);
|
|
@@ -51,7 +51,7 @@ const percentage = computed(() => Math.min(100, Math.max(0, (props.value / props
|
|
|
51
51
|
.n-progress-bar {
|
|
52
52
|
height: 100%;
|
|
53
53
|
border-radius: var(--n-radius-full);
|
|
54
|
-
transition: width
|
|
54
|
+
transition: width var(--n-transition-slow);
|
|
55
55
|
display: flex;
|
|
56
56
|
align-items: center;
|
|
57
57
|
justify-content: flex-end;
|
|
@@ -89,11 +89,11 @@ const percentage = computed(() => Math.min(100, Math.max(0, (props.value / props
|
|
|
89
89
|
.is-striped .n-progress-bar {
|
|
90
90
|
background-image: linear-gradient(
|
|
91
91
|
45deg,
|
|
92
|
-
|
|
92
|
+
var(--n-color-stripe) 25%,
|
|
93
93
|
transparent 25%,
|
|
94
94
|
transparent 50%,
|
|
95
|
-
|
|
96
|
-
|
|
95
|
+
var(--n-color-stripe) 50%,
|
|
96
|
+
var(--n-color-stripe) 75%,
|
|
97
97
|
transparent 75%,
|
|
98
98
|
transparent
|
|
99
99
|
);
|