Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Jérome Perrin
gitlab-ce
Commits
f072af2e
Commit
f072af2e
authored
Jan 30, 2018
by
Jose Ivan Vargas
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add confirmation input component
parent
03f386c2
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
130 additions
and
0 deletions
+130
-0
app/assets/javascripts/vue_shared/components/confirmation_input.vue
.../javascripts/vue_shared/components/confirmation_input.vue
+62
-0
changelogs/unreleased/add-confirmation-input-for-modals.yml
changelogs/unreleased/add-confirmation-input-for-modals.yml
+5
-0
spec/javascripts/vue_shared/components/confirmation_input_spec.js
...ascripts/vue_shared/components/confirmation_input_spec.js
+63
-0
No files found.
app/assets/javascripts/vue_shared/components/confirmation_input.vue
0 → 100644
View file @
f072af2e
<
script
>
import
_
from
'
underscore
'
;
import
{
__
,
sprintf
}
from
'
~/locale
'
;
export
default
{
props
:
{
inputId
:
{
type
:
String
,
required
:
true
,
},
confirmationKey
:
{
type
:
String
,
required
:
true
,
},
confirmationValue
:
{
type
:
String
,
required
:
true
,
},
shouldEscapeConfirmationValue
:
{
type
:
Boolean
,
required
:
false
,
default
:
true
,
},
},
computed
:
{
inputLabel
()
{
let
value
=
this
.
confirmationValue
;
if
(
this
.
shouldEscapeConfirmationValue
)
{
value
=
_
.
escape
(
value
);
}
return
sprintf
(
__
(
'
Type %{value} to confirm:
'
),
{
value
:
`<code>
${
value
}
</code>`
},
false
,
);
},
},
methods
:
{
hasCorrectValue
()
{
return
this
.
$refs
.
enteredValue
.
value
===
this
.
confirmationValue
;
},
},
};
</
script
>
<
template
>
<div>
<label
v-html=
"inputLabel"
:for=
"inputId"
>
</label>
<input
:id=
"inputId"
:name=
"confirmationKey"
type=
"text"
ref=
"enteredValue"
class=
"form-control"
/>
</div>
</
template
>
changelogs/unreleased/add-confirmation-input-for-modals.yml
0 → 100644
View file @
f072af2e
---
title
:
Add confirmation-input component
merge_request
:
16816
author
:
type
:
other
spec/javascripts/vue_shared/components/confirmation_input_spec.js
0 → 100644
View file @
f072af2e
import
Vue
from
'
vue
'
;
import
confirmationInput
from
'
~/vue_shared/components/confirmation_input.vue
'
;
import
mountComponent
from
'
../../helpers/vue_mount_component_helper
'
;
describe
(
'
Confirmation input component
'
,
()
=>
{
const
Component
=
Vue
.
extend
(
confirmationInput
);
const
props
=
{
inputId
:
'
dummy-id
'
,
confirmationKey
:
'
confirmation-key
'
,
confirmationValue
:
'
confirmation-value
'
,
};
let
vm
;
afterEach
(()
=>
{
vm
.
$destroy
();
});
describe
(
'
props
'
,
()
=>
{
beforeEach
(()
=>
{
vm
=
mountComponent
(
Component
,
props
);
});
it
(
'
sets id of the input field to inputId
'
,
()
=>
{
expect
(
vm
.
$refs
.
enteredValue
.
id
).
toBe
(
props
.
inputId
);
});
it
(
'
sets name of the input field to confirmationKey
'
,
()
=>
{
expect
(
vm
.
$refs
.
enteredValue
.
name
).
toBe
(
props
.
confirmationKey
);
});
});
describe
(
'
computed
'
,
()
=>
{
describe
(
'
inputLabel
'
,
()
=>
{
it
(
'
escapes confirmationValue by default
'
,
()
=>
{
vm
=
mountComponent
(
Component
,
{
...
props
,
confirmationValue
:
'
n<e></e>ds escap"ng
'
});
expect
(
vm
.
inputLabel
).
toBe
(
'
Type <code>n<e></e>ds escap"ng</code> to confirm:
'
);
});
it
(
'
does not escape confirmationValue if escapeValue is false
'
,
()
=>
{
vm
=
mountComponent
(
Component
,
{
...
props
,
confirmationValue
:
'
n<e></e>ds escap"ng
'
,
shouldEscapeConfirmationValue
:
false
});
expect
(
vm
.
inputLabel
).
toBe
(
'
Type <code>n<e></e>ds escap"ng</code> to confirm:
'
);
});
});
});
describe
(
'
methods
'
,
()
=>
{
describe
(
'
hasCorrectValue
'
,
()
=>
{
beforeEach
(()
=>
{
vm
=
mountComponent
(
Component
,
props
);
});
it
(
'
returns false if entered value is incorrect
'
,
()
=>
{
vm
.
$refs
.
enteredValue
.
value
=
'
incorrect
'
;
expect
(
vm
.
hasCorrectValue
()).
toBe
(
false
);
});
it
(
'
returns true if entered value is correct
'
,
()
=>
{
vm
.
$refs
.
enteredValue
.
value
=
props
.
confirmationValue
;
expect
(
vm
.
hasCorrectValue
()).
toBe
(
true
);
});
});
});
});
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment