added messages list, new client form, logic for client Apps plus others
This commit is contained in:
@@ -23,3 +23,5 @@
|
|||||||
RewriteCond %{REQUEST_FILENAME} !-f
|
RewriteCond %{REQUEST_FILENAME} !-f
|
||||||
RewriteRule ^ index.php [L]
|
RewriteRule ^ index.php [L]
|
||||||
</IfModule>
|
</IfModule>
|
||||||
|
php_value upload_max_filesize 512M
|
||||||
|
php_value post_max_size 512M
|
||||||
|
|||||||
@@ -5,6 +5,10 @@ namespace App\Http\Controllers;
|
|||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Utilities\ApiCalls;
|
use App\Utilities\ApiCalls;
|
||||||
use Session;
|
use Session;
|
||||||
|
use Illuminate\Support\Facades\Mail;
|
||||||
|
use App\Mail\NewClientMail;
|
||||||
|
use App\Models;
|
||||||
|
|
||||||
class AdminController extends Controller
|
class AdminController extends Controller
|
||||||
{
|
{
|
||||||
public function index(){
|
public function index(){
|
||||||
@@ -35,10 +39,25 @@ class AdminController extends Controller
|
|||||||
// 'status' => 'required',
|
// 'status' => 'required',
|
||||||
]);
|
]);
|
||||||
$client_arr = $request->except('_token');
|
$client_arr = $request->except('_token');
|
||||||
|
|
||||||
|
|
||||||
$create_client_url = "clients";
|
$create_client_url = "clients";
|
||||||
$result = ApiCalls::CurlPost(json_encode($client_arr), $create_client_url);
|
$result = ApiCalls::CurlPost(json_encode($client_arr), $create_client_url);
|
||||||
if ($result) {
|
if ($result) {
|
||||||
Session::flash('success_message', 'client created successfully!');
|
Session::flash('success_message', 'client created successfully!');
|
||||||
|
//send email with link to set password and activate their account
|
||||||
|
$activation_hash = uniqid();
|
||||||
|
$result_arr = json_decode($result, true);
|
||||||
|
|
||||||
|
$clients_arr['client_id'] = $result_arr['id'];
|
||||||
|
$clients_arr['email'] = $request->email;
|
||||||
|
$clients_arr['activation_hash'] = $activation_hash;
|
||||||
|
$clients_arr['activation_start_time'] = date('Y-m-d H:i:s');
|
||||||
|
$local_result = Models\ClientSession::create($clients_arr);
|
||||||
|
\Log::info('Client Session result : ' . json_encode($local_result));
|
||||||
|
|
||||||
|
$recipientEmail = $request->email;
|
||||||
|
Mail::to($recipientEmail)->send(new NewClientMail($recipientEmail, $activation_hash));
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
Session::flash('error_message', 'client could not be created !');
|
Session::flash('error_message', 'client could not be created !');
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ class ConfirmPasswordController extends Controller
|
|||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $redirectTo = '/home';
|
protected $redirectTo = '/admin/home';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new controller instance.
|
* Create a new controller instance.
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ class LoginController extends Controller
|
|||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $redirectTo = '/home';
|
protected $redirectTo = '/admin/home';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new controller instance.
|
* Create a new controller instance.
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class RegisterController extends Controller
|
|||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $redirectTo = '/home';
|
protected $redirectTo = '/admin/home';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new controller instance.
|
* Create a new controller instance.
|
||||||
|
|||||||
@@ -25,5 +25,5 @@ class ResetPasswordController extends Controller
|
|||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $redirectTo = '/home';
|
protected $redirectTo = '/admin/home';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ class VerificationController extends Controller
|
|||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $redirectTo = '/home';
|
protected $redirectTo = '/admin/home';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new controller instance.
|
* Create a new controller instance.
|
||||||
|
|||||||
@@ -6,31 +6,95 @@ use Illuminate\Http\Request;
|
|||||||
use App\Models;
|
use App\Models;
|
||||||
use App\Utilities\ApiCalls;
|
use App\Utilities\ApiCalls;
|
||||||
use Session;
|
use Session;
|
||||||
|
use Illuminate\Validation\Rules\Password;
|
||||||
|
use Illuminate\Support\Carbon;
|
||||||
|
use Illuminate\Support\Facades\Hash;
|
||||||
|
|
||||||
class ClientsLoginController extends Controller
|
class ClientsLoginController extends Controller
|
||||||
{
|
{
|
||||||
public function index(){
|
public function index(){
|
||||||
$data = [
|
$data = [
|
||||||
'page_title' => 'User Login'
|
'page_title' => 'User Login'
|
||||||
];
|
];
|
||||||
return view('client-auth.login-test', $data);
|
return view('client-auth.login', $data);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
public function activation_show($hash){
|
||||||
|
#check if activation hash exist and it has not expired
|
||||||
|
$check_activation = Models\ClientSession::where('activation_hash', $hash)->firstOrFail();
|
||||||
|
// dump($check_activation);
|
||||||
|
$elapsedMinutes = now()->diffInMinutes($check_activation->activation_start_time);
|
||||||
|
if ($elapsedMinutes > 30) {
|
||||||
|
// code...
|
||||||
|
// $elapsedDays = Carbon::parse($stringDate)->diffInDays();
|
||||||
|
// OR using the now() helper
|
||||||
|
|
||||||
|
// $isExpired = $check_activation->activation_start_time->diffInMinutes() > 30;
|
||||||
|
$data = [
|
||||||
|
'page_title' => 'Client Activation Expired'
|
||||||
|
];
|
||||||
|
return view('client-auth.activation-notfound', $data);
|
||||||
|
}
|
||||||
|
$data = [
|
||||||
|
'page_title' => 'Client Activation',
|
||||||
|
'hash' => $hash
|
||||||
|
];
|
||||||
|
return view('client-auth.activation-form', $data);
|
||||||
|
|
||||||
|
}
|
||||||
|
public function activation(Request $request){
|
||||||
|
$this->validate($request, [
|
||||||
|
// 'activation_hash' => 'required',
|
||||||
|
'password' => 'required',
|
||||||
|
// 'password' => ['required', 'min:8', 'confirmed']
|
||||||
|
'password' => ['required','confirmed', Password::min(8)->letters()->numbers(),]
|
||||||
|
]);
|
||||||
|
if ($request->filled('activation_hash')) {
|
||||||
|
return redirect()->back()->withErrors(['Your Activation request can not be handled. Try again']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$client = Models\ClientSession::where('activation_hash', $request->hash)->firstOrFail();
|
||||||
|
if ($client->activation_status == 'ACTIVATED') {
|
||||||
|
return redirect()->back()->withErrors(['Your Activation request can not be handled. Try again']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$create_client_url = "clients/$client->client_id/status";
|
||||||
|
$client_arr = ['status' => 'ACTIVE'];
|
||||||
|
$result = ApiCalls::CurlPatch(json_encode($client_arr), $create_client_url);
|
||||||
|
|
||||||
|
|
||||||
|
$name = $client->name;
|
||||||
|
// $client->client_id = $result->id;
|
||||||
|
$client->activation_status = 'ACTIVATED';
|
||||||
|
$client->password = Hash::make($request->password);
|
||||||
|
$client->save();
|
||||||
|
|
||||||
|
|
||||||
|
\Log::info($name . ' Successfully activated their account at : ' . date('Y-m-d H:i:s'));
|
||||||
|
Session::flash('success_message', 'You have successfully activated your account, login to get started');
|
||||||
|
return redirect(url('/'));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public function handleLogin(Request $request){
|
public function handleLogin(Request $request){
|
||||||
|
|
||||||
$this->validate($request, ['email' => 'required', 'password' => 'required']);
|
$this->validate($request, ['email' => 'required', 'password' => 'required']);
|
||||||
$logged_in = '';
|
$logged_in = '';
|
||||||
|
|
||||||
$client_url = "clients/1";
|
$client = Models\ClientSession::where('email', $request->email)->first();
|
||||||
|
|
||||||
|
if ($client == false) {
|
||||||
|
return redirect()->back()->withErrors(['Invalid credentials']);
|
||||||
|
}
|
||||||
|
$client_url = "clients/" . $client->client_id;
|
||||||
$result = ApiCalls::CurlGet($client_url);
|
$result = ApiCalls::CurlGet($client_url);
|
||||||
$result_arr = json_decode($result, true);
|
$result_arr = json_decode($result, true);
|
||||||
|
|
||||||
// dd($result_arr);
|
|
||||||
|
|
||||||
$logged_in = $result_arr;
|
$logged_in = $result_arr;
|
||||||
|
|
||||||
$request->session()->regenerate(true);
|
$request->session()->regenerate(true);
|
||||||
$request->session()->put('current_user.user_id', $logged_in['id']);
|
$request->session()->put('current_user.user_id', $logged_in['id']);
|
||||||
|
$request->session()->put('current_user.org_id', $logged_in['id']);
|
||||||
$request->session()->put('current_user.name', $logged_in['name']);
|
$request->session()->put('current_user.name', $logged_in['name']);
|
||||||
$request->session()->put('current_user.email', $logged_in['email']);
|
$request->session()->put('current_user.email', $logged_in['email']);
|
||||||
$request->session()->put('current_user.phoneNumber', $logged_in['phoneNumber']);
|
$request->session()->put('current_user.phoneNumber', $logged_in['phoneNumber']);
|
||||||
@@ -42,7 +106,7 @@ class ClientsLoginController extends Controller
|
|||||||
\Log::info($logged_in['name']. ' Successfully logged in at : ' . date('Y-m-d H:i:s'));
|
\Log::info($logged_in['name']. ' Successfully logged in at : ' . date('Y-m-d H:i:s'));
|
||||||
return redirect(url('/'));
|
return redirect(url('/'));
|
||||||
}
|
}
|
||||||
public function handle_logout(Request $request) {
|
public function handle_logout(Request $request) {
|
||||||
$user_id = session('current_user.id');
|
$user_id = session('current_user.id');
|
||||||
$name = session('current_user.name');
|
$name = session('current_user.name');
|
||||||
|
|
||||||
|
|||||||
@@ -6,27 +6,101 @@ use Illuminate\Http\Request;
|
|||||||
use App\Models;
|
use App\Models;
|
||||||
use App\Utilities\ApiCalls;
|
use App\Utilities\ApiCalls;
|
||||||
use Session;
|
use Session;
|
||||||
|
use Illuminate\Pagination\LengthAwarePaginator;
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
|
||||||
class ClientsTrafficController extends Controller
|
class ClientsTrafficController extends Controller
|
||||||
{
|
{
|
||||||
//
|
public function indexNew(){
|
||||||
|
$search = $request->input('search');
|
||||||
|
$client_id = session('current_user.org_id');
|
||||||
|
$clients_url = "messages/client/$client_id?page=0&size=20&sort=createdAt,desc";
|
||||||
|
$result = ApiCalls::CurlGet($clients_url);
|
||||||
|
$result_arr = json_decode($result);
|
||||||
|
|
||||||
|
$items = collect($result_arr->content); // Convert API array to Collection
|
||||||
|
|
||||||
|
if ($search) {
|
||||||
|
$items = $items->filter(function ($item) use ($search) {
|
||||||
|
return stripos($item['name'], $search) !== false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
$currentPage = Paginator::resolveCurrentPage() ?: 1;
|
||||||
|
$perPage = $result_arr->size;
|
||||||
|
$currentPageItems = $items->slice(($currentPage - 1) * $perPage, $perPage)->all();
|
||||||
|
|
||||||
|
$paginatedItems = new LengthAwarePaginator(
|
||||||
|
$currentPageItems,
|
||||||
|
$items->count(),
|
||||||
|
$perPage,
|
||||||
|
$currentPage,
|
||||||
|
['path' => $request->url(), 'query' => $request->query()]
|
||||||
|
);
|
||||||
|
}
|
||||||
public function index(){
|
public function index(){
|
||||||
$clients_url = "messages/client/1?page=0&size=20&sort=createdAt,desc";
|
//dump(session('current_user'));
|
||||||
|
$client_id = session('current_user.org_id');
|
||||||
|
$clients_url = "messages/client/$client_id?page=0&size=20&sort=createdAt,desc";
|
||||||
$result = ApiCalls::CurlGet($clients_url);
|
$result = ApiCalls::CurlGet($clients_url);
|
||||||
$result_arr = json_decode($result);
|
$result_arr = json_decode($result);
|
||||||
// dump($result_arr);
|
// dump($result_arr);
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'page_title' => 'Traffic Dashboard',
|
'page_title' => 'SMS Traffic',
|
||||||
'traffic_arr' => $result_arr
|
'traffic_arr' => $result_arr
|
||||||
];
|
];
|
||||||
return view('client-traffic.index', $data);
|
return view('client-traffic.index-test', $data);
|
||||||
|
}
|
||||||
|
public function indexTabulator(Request $request){
|
||||||
|
$client = new Client();
|
||||||
|
|
||||||
|
// Construct the URL with pagination parameters from the request
|
||||||
|
$page = $request->input('page', 0); // Note: This API seems 0-indexed
|
||||||
|
$size = $request->input('size', 20);
|
||||||
|
/*
|
||||||
|
$response = $client->request('GET', 'http://62.171.149.214:9990/api/messages/client/1?page=0&size=20&sort=createdAt,desc', [
|
||||||
|
'query' => [
|
||||||
|
'page' => $page,
|
||||||
|
'size' => $size,
|
||||||
|
],
|
||||||
|
'headers' => [
|
||||||
|
'Accept' => 'application/json',
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
$data = json_decode($response->getBody(), true);
|
||||||
|
|
||||||
|
*/
|
||||||
|
$client_id = session('current_user.org_id');
|
||||||
|
$clients_url = "messages/client/1?page=0&size=20&sort=createdAt,desc";
|
||||||
|
$result = ApiCalls::CurlGet($clients_url);
|
||||||
|
// $content_only = collect($result['content'])->toArray();
|
||||||
|
$data = json_decode($result, true);
|
||||||
|
|
||||||
|
// dd($data['content']);
|
||||||
|
|
||||||
|
return response()->json($data);
|
||||||
|
// return response()->json([
|
||||||
|
// 'last_page' => $data['totalPages'],
|
||||||
|
// 'data' => $data['content'],
|
||||||
|
// 'total' => $data['totalElements']
|
||||||
|
// ]);
|
||||||
|
}
|
||||||
|
public function getClientApps(){
|
||||||
|
//dump(session('current_user'));
|
||||||
|
$client_id = session('current_user.org_id');
|
||||||
|
$apps_url = "applications/client/$client_id?page=0&size=20&sort=createdAt,desc";
|
||||||
|
$result = ApiCalls::CurlGet($apps_url);
|
||||||
|
$result_arr = json_decode($result);
|
||||||
|
$data = [
|
||||||
|
'page_title' => 'Applications',
|
||||||
|
'apps_arr' => $result_arr
|
||||||
|
];
|
||||||
|
return view('client-traffic.client-apps', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function smsForm(){
|
public function smsForm(){
|
||||||
|
//check if client has an app
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'page_title' => 'Send SMS',
|
'page_title' => 'Send SMS',
|
||||||
@@ -34,4 +108,83 @@ class ClientsTrafficController extends Controller
|
|||||||
return view('client-traffic.send-sms', $data);
|
return view('client-traffic.send-sms', $data);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
public function store(Request $request){
|
||||||
|
|
||||||
|
$this->validate($request, [
|
||||||
|
'message' => 'required',
|
||||||
|
'sender_id' => 'required|max:11',
|
||||||
|
'recipients_file'=> 'mimes:csv,txt|max:4096',
|
||||||
|
'pasted' => 'sometimes',
|
||||||
|
// 'status' => 'required',
|
||||||
|
]);
|
||||||
|
$recipients_arr = [];
|
||||||
|
// $create_client_url = "clients";
|
||||||
|
// $result = ApiCalls::CurlPost(json_encode($client_arr), $create_client_url);
|
||||||
|
|
||||||
|
if ($request->recipient_file && $request->pasted) {
|
||||||
|
// code...
|
||||||
|
}
|
||||||
|
if ($request->filled('pasted')) {
|
||||||
|
// code...
|
||||||
|
$pasted_arr = explode(", ", $request->pasted);
|
||||||
|
foreach ($pasted_arr as $value) {
|
||||||
|
// code...
|
||||||
|
if (ctype_digit($value) && (strlen($value) == 11 || strlen($value) == 12)) {
|
||||||
|
// Valid
|
||||||
|
$recipients_arr[] = trim($value);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($request->hasFile('recipients_file')) {
|
||||||
|
$file = fopen($request->file('recipients_file'), 'r');
|
||||||
|
$data = fgetcsv($file, 1000, ',');
|
||||||
|
foreach ($data as $value) {
|
||||||
|
$recipients_arr[] = trim($value);
|
||||||
|
}
|
||||||
|
fclose($file);
|
||||||
|
}
|
||||||
|
$recipients_arr = array_unique($recipients_arr);
|
||||||
|
foreach ($recipients_arr as $phone) {
|
||||||
|
$payload = [
|
||||||
|
'from' => $request->sender_id,
|
||||||
|
'to' => $phone,
|
||||||
|
'refId' => uniqid(),
|
||||||
|
'message' => $request->message
|
||||||
|
];
|
||||||
|
\Log::info('Payload details ' . json_encode($payload));
|
||||||
|
$send_sms_url = "sms/send";
|
||||||
|
#$result = ApiCalls::CurlPost($send_sms_url, $payload);
|
||||||
|
#\Log::info('Message Successfully submitted ' . $result);
|
||||||
|
}
|
||||||
|
// $result_arr = json_decode($result);
|
||||||
|
|
||||||
|
|
||||||
|
Session::flash('success_message', 'Message successfully submitted for delivery!');
|
||||||
|
return redirect("send-sms");
|
||||||
|
}
|
||||||
|
public function newAppStore(Request $request){
|
||||||
|
|
||||||
|
$this->validate($request, [
|
||||||
|
'application_name' => 'required',
|
||||||
|
'orgId' => 'required',
|
||||||
|
'application_type'=> 'required',
|
||||||
|
]);
|
||||||
|
$payload['name'] = $request->application_name;
|
||||||
|
$payload['type'] = $request->application_type;
|
||||||
|
$payload['orgId'] = $request->orgId;
|
||||||
|
|
||||||
|
$create_application_url = "applications";
|
||||||
|
$result = ApiCalls::CurlPost(json_encode($payload), $create_application_url);
|
||||||
|
\Log::info('Application creation request ' . json_encode($payload));
|
||||||
|
\Log::info('Application Successfully created ' . $result);
|
||||||
|
$result_arr = json_decode($result, true);
|
||||||
|
//save application in a db
|
||||||
|
|
||||||
|
$retval = Models\ClientApplication::create($result_arr);
|
||||||
|
return response()->json(json_decode($result, true));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,4 +9,15 @@ use Illuminate\Routing\Controller as BaseController;
|
|||||||
class Controller extends BaseController
|
class Controller extends BaseController
|
||||||
{
|
{
|
||||||
use AuthorizesRequests, ValidatesRequests;
|
use AuthorizesRequests, ValidatesRequests;
|
||||||
|
function validate_11_or_12_digits($string) {
|
||||||
|
// Check if the string contains only digits
|
||||||
|
if (ctype_digit($string)) {
|
||||||
|
// Check if the length is 11 or 12
|
||||||
|
$length = strlen($string);
|
||||||
|
if ($length === 11 || $length === 12) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
55
app/Mail/NewClientMail.php
Normal file
55
app/Mail/NewClientMail.php
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Mail;
|
||||||
|
|
||||||
|
use Illuminate\Bus\Queueable;
|
||||||
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
|
use Illuminate\Mail\Mailable;
|
||||||
|
use Illuminate\Mail\Mailables\Content;
|
||||||
|
use Illuminate\Mail\Mailables\Envelope;
|
||||||
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
|
class NewClientMail extends Mailable
|
||||||
|
{
|
||||||
|
use Queueable, SerializesModels;
|
||||||
|
public $email;
|
||||||
|
public $activation_hash;
|
||||||
|
/**
|
||||||
|
* Create a new message instance.
|
||||||
|
*/
|
||||||
|
public function __construct($email, $activation_hash)
|
||||||
|
{
|
||||||
|
$this->email = $email;
|
||||||
|
$this->activation_hash = $activation_hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the message envelope.
|
||||||
|
*/
|
||||||
|
public function envelope(): Envelope
|
||||||
|
{
|
||||||
|
return new Envelope(
|
||||||
|
subject: 'Client Portal Account Activation',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the message content definition.
|
||||||
|
*/
|
||||||
|
public function content(): Content
|
||||||
|
{
|
||||||
|
return new Content(
|
||||||
|
view: 'emails.newclient',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the attachments for the message.
|
||||||
|
*
|
||||||
|
* @return array<int, \Illuminate\Mail\Mailables\Attachment>
|
||||||
|
*/
|
||||||
|
public function attachments(): array
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
12
app/Models/ClientApplication.php
Normal file
12
app/Models/ClientApplication.php
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class ClientApplication extends Model
|
||||||
|
{
|
||||||
|
protected $guarded = [
|
||||||
|
'id'
|
||||||
|
];
|
||||||
|
}
|
||||||
12
app/Models/ClientSession.php
Normal file
12
app/Models/ClientSession.php
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class ClientSession extends Model
|
||||||
|
{
|
||||||
|
protected $guarded = [
|
||||||
|
'id'
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Models;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
|
||||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
|
||||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
||||||
|
|
||||||
|
|
||||||
class Comment extends Model
|
|
||||||
{
|
|
||||||
protected $guarded = [
|
|
||||||
'id'
|
|
||||||
];
|
|
||||||
public function userInfo(): HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(User::class);
|
|
||||||
}
|
|
||||||
public function projectStatus(): BelongsTo
|
|
||||||
{
|
|
||||||
return $this->belongsTo(ProjectStatus::class);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Models;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
|
||||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
|
||||||
|
|
||||||
|
|
||||||
class Project extends Model
|
|
||||||
{
|
|
||||||
protected $guarded = [
|
|
||||||
'id'
|
|
||||||
];
|
|
||||||
|
|
||||||
// public function userInfo()
|
|
||||||
// {
|
|
||||||
// return $this->hasMany('App\Models\User', 'org_id', 'id');
|
|
||||||
// }
|
|
||||||
// public function phone(): HasOne
|
|
||||||
// {
|
|
||||||
// return $this->hasOne(Phone::class);
|
|
||||||
// }
|
|
||||||
public function userInfo(): HasMany
|
|
||||||
{
|
|
||||||
return $this->hasMany(User::class);
|
|
||||||
}
|
|
||||||
public function statusInfo(): HasMany
|
|
||||||
{
|
|
||||||
return $this->hasMany(ProjectStatus::class);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Models;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
|
||||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
||||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
|
||||||
|
|
||||||
class ProjectStatus extends Model
|
|
||||||
{
|
|
||||||
protected $guarded = [
|
|
||||||
'id'
|
|
||||||
];
|
|
||||||
|
|
||||||
public function project(): BelongsTo
|
|
||||||
{
|
|
||||||
return $this->belongsTo(Project::class);
|
|
||||||
}
|
|
||||||
public function comments(): HasMany
|
|
||||||
{
|
|
||||||
return $this->hasMany(Comment::class);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -51,6 +51,31 @@ class ApiCalls
|
|||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function CurlPatch($data, $url){
|
||||||
|
$patch_url = env('APIBASEURL') . $url;
|
||||||
|
$curl = curl_init();
|
||||||
|
|
||||||
|
curl_setopt_array($curl, array(
|
||||||
|
CURLOPT_URL => $patch_url,
|
||||||
|
CURLOPT_RETURNTRANSFER => true,
|
||||||
|
CURLOPT_ENCODING => '',
|
||||||
|
CURLOPT_MAXREDIRS => 10,
|
||||||
|
CURLOPT_TIMEOUT => 0,
|
||||||
|
CURLOPT_FOLLOWLOCATION => true,
|
||||||
|
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
|
||||||
|
CURLOPT_CUSTOMREQUEST => 'PATCH',
|
||||||
|
CURLOPT_POSTFIELDS => $data,
|
||||||
|
CURLOPT_HTTPHEADER => array(
|
||||||
|
'Content-Type: application/json'
|
||||||
|
),
|
||||||
|
));
|
||||||
|
|
||||||
|
$response = curl_exec($curl);
|
||||||
|
|
||||||
|
curl_close($curl);
|
||||||
|
echo $response;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public static function generatePassword($length = 10) {
|
public static function generatePassword($length = 10) {
|
||||||
return bin2hex(random_bytes($length / 2));
|
return bin2hex(random_bytes($length / 2));
|
||||||
|
|||||||
@@ -9,7 +9,8 @@
|
|||||||
"php": "^8.2",
|
"php": "^8.2",
|
||||||
"laravel/framework": "^11.31",
|
"laravel/framework": "^11.31",
|
||||||
"laravel/tinker": "^2.9",
|
"laravel/tinker": "^2.9",
|
||||||
"laravel/ui": "^4.6"
|
"laravel/ui": "^4.6",
|
||||||
|
"propaganistas/laravel-phone": "^6.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"fakerphp/faker": "^1.23",
|
"fakerphp/faker": "^1.23",
|
||||||
|
|||||||
152
composer.lock
generated
152
composer.lock
generated
@@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "a7159c5237c3c2e75dbd1d23c85e732c",
|
"content-hash": "55f1ef71ef7290b7cc2dac9e2f0bbb39",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "brick/math",
|
"name": "brick/math",
|
||||||
@@ -579,6 +579,84 @@
|
|||||||
],
|
],
|
||||||
"time": "2025-12-03T09:33:47+00:00"
|
"time": "2025-12-03T09:33:47+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "giggsey/libphonenumber-for-php-lite",
|
||||||
|
"version": "9.0.26",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/giggsey/libphonenumber-for-php-lite.git",
|
||||||
|
"reference": "7677b7645fcbd34482fcb3a96d4085f92d28ef98"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/giggsey/libphonenumber-for-php-lite/zipball/7677b7645fcbd34482fcb3a96d4085f92d28ef98",
|
||||||
|
"reference": "7677b7645fcbd34482fcb3a96d4085f92d28ef98",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^8.1",
|
||||||
|
"symfony/polyfill-mbstring": "^1.17"
|
||||||
|
},
|
||||||
|
"conflict": {
|
||||||
|
"giggsey/libphonenumber-for-php": "*"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"ext-dom": "*",
|
||||||
|
"friendsofphp/php-cs-fixer": "^3.71",
|
||||||
|
"infection/infection": "^0.29|^0.31.0",
|
||||||
|
"nette/php-generator": "^4.1",
|
||||||
|
"php-coveralls/php-coveralls": "^2.7",
|
||||||
|
"phpstan/extension-installer": "^1.4.3",
|
||||||
|
"phpstan/phpstan": "^2.1.7",
|
||||||
|
"phpstan/phpstan-deprecation-rules": "^2.0.1",
|
||||||
|
"phpstan/phpstan-phpunit": "^2.0.4",
|
||||||
|
"phpstan/phpstan-strict-rules": "^2.0.3",
|
||||||
|
"phpunit/phpunit": "^10.5.45",
|
||||||
|
"symfony/console": "^6.4",
|
||||||
|
"symfony/filesystem": "^6.4",
|
||||||
|
"symfony/process": "^6.4"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"giggsey/libphonenumber-for-php": "Use libphonenumber-for-php for geocoding, carriers, timezones and matching"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "9.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"libphonenumber\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"Apache-2.0"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Joshua Gigg",
|
||||||
|
"email": "giggsey@gmail.com",
|
||||||
|
"homepage": "https://giggsey.com/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "A lite version of giggsey/libphonenumber-for-php, which is a PHP Port of Google's libphonenumber",
|
||||||
|
"homepage": "https://github.com/giggsey/libphonenumber-for-php-lite",
|
||||||
|
"keywords": [
|
||||||
|
"geocoding",
|
||||||
|
"geolocation",
|
||||||
|
"libphonenumber",
|
||||||
|
"mobile",
|
||||||
|
"phonenumber",
|
||||||
|
"validation"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/giggsey/libphonenumber-for-php-lite/issues",
|
||||||
|
"source": "https://github.com/giggsey/libphonenumber-for-php-lite"
|
||||||
|
},
|
||||||
|
"time": "2026-03-13T10:52:10+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "graham-campbell/result-type",
|
"name": "graham-campbell/result-type",
|
||||||
"version": "v1.1.4",
|
"version": "v1.1.4",
|
||||||
@@ -2657,6 +2735,78 @@
|
|||||||
],
|
],
|
||||||
"time": "2025-12-27T19:41:33+00:00"
|
"time": "2025-12-27T19:41:33+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "propaganistas/laravel-phone",
|
||||||
|
"version": "6.0.3",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/Propaganistas/Laravel-Phone.git",
|
||||||
|
"reference": "b0e2bdb44cfbeaf2466862aaf854815605b5205a"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/Propaganistas/Laravel-Phone/zipball/b0e2bdb44cfbeaf2466862aaf854815605b5205a",
|
||||||
|
"reference": "b0e2bdb44cfbeaf2466862aaf854815605b5205a",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-mbstring": "*",
|
||||||
|
"giggsey/libphonenumber-for-php-lite": "^9.0",
|
||||||
|
"illuminate/contracts": "^11.0|^12.0|^13.0",
|
||||||
|
"illuminate/support": "^11.0|^12.0|^13.0",
|
||||||
|
"illuminate/validation": "^11.0|^12.0|^13.0",
|
||||||
|
"php": "^8.2"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"laravel/pint": "^1.21",
|
||||||
|
"orchestra/testbench": "*",
|
||||||
|
"phpunit/phpunit": "^11.5.3"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"laravel": {
|
||||||
|
"providers": [
|
||||||
|
"Propaganistas\\LaravelPhone\\PhoneServiceProvider"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"src/helpers.php"
|
||||||
|
],
|
||||||
|
"psr-4": {
|
||||||
|
"Propaganistas\\LaravelPhone\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Propaganistas",
|
||||||
|
"email": "Propaganistas@users.noreply.github.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Adds phone number functionality to Laravel based on Google's libphonenumber API.",
|
||||||
|
"keywords": [
|
||||||
|
"laravel",
|
||||||
|
"libphonenumber",
|
||||||
|
"phone",
|
||||||
|
"validation"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/Propaganistas/Laravel-Phone/issues",
|
||||||
|
"source": "https://github.com/Propaganistas/Laravel-Phone/tree/6.0.3"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/Propaganistas",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2026-03-18T07:05:47+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "psr/clock",
|
"name": "psr/clock",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
|
|||||||
@@ -190,6 +190,21 @@ a {
|
|||||||
color: #fff;
|
color: #fff;
|
||||||
box-shadow: 0 16px 30px rgba(0, 123, 181, 0.22);
|
box-shadow: 0 16px 30px rgba(0, 123, 181, 0.22);
|
||||||
}
|
}
|
||||||
|
.btn-clicksuccess {
|
||||||
|
min-height: 3.25rem;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
border-radius: 999px;
|
||||||
|
padding: 0.9rem 1.5rem;
|
||||||
|
font-weight: 700;
|
||||||
|
line-height: 1;
|
||||||
|
letter-spacing: 0.01em;
|
||||||
|
border: none;
|
||||||
|
background: linear-gradient(135deg, var(--click-success), var(--click-success));
|
||||||
|
color: #fff;
|
||||||
|
box-shadow: 0 16px 30px rgba(0, 123, 181, 0.22);
|
||||||
|
}
|
||||||
|
|
||||||
.btn-click:hover,
|
.btn-click:hover,
|
||||||
.btn-click:focus {
|
.btn-click:focus {
|
||||||
|
|||||||
4
public/libs/jquery-3.2.1.min.js
vendored
Normal file
4
public/libs/jquery-3.2.1.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
9
public/libs/jquery-confirm/jquery-confirm.min.css
vendored
Normal file
9
public/libs/jquery-confirm/jquery-confirm.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
10
public/libs/jquery-confirm/jquery-confirm.min.js
vendored
Normal file
10
public/libs/jquery-confirm/jquery-confirm.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
23
public/libs/select2/.bower.json
Executable file
23
public/libs/select2/.bower.json
Executable file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"name": "select2",
|
||||||
|
"description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.",
|
||||||
|
"main": [
|
||||||
|
"dist/js/select2.js",
|
||||||
|
"src/scss/core.scss"
|
||||||
|
],
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git@github.com:select2/select2.git"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/ivaynberg/select2",
|
||||||
|
"version": "4.0.3",
|
||||||
|
"_release": "4.0.3",
|
||||||
|
"_resolution": {
|
||||||
|
"type": "version",
|
||||||
|
"tag": "4.0.3",
|
||||||
|
"commit": "566c7846fbf8c3b7674346f26d0ee872c0a77629"
|
||||||
|
},
|
||||||
|
"_source": "https://github.com/ivaynberg/select2.git",
|
||||||
|
"_target": "^4.0.2",
|
||||||
|
"_originalSource": "select2"
|
||||||
|
}
|
||||||
6
public/libs/select2/.editorconfig
Executable file
6
public/libs/select2/.editorconfig
Executable file
@@ -0,0 +1,6 @@
|
|||||||
|
[*]
|
||||||
|
indent_style = space
|
||||||
|
end_of_line = lf
|
||||||
|
|
||||||
|
[*.js]
|
||||||
|
indent_size = 2
|
||||||
3
public/libs/select2/.gitignore
vendored
Executable file
3
public/libs/select2/.gitignore
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
node_modules
|
||||||
|
dist/js/i18n/build.txt
|
||||||
|
.sass-cache
|
||||||
4
public/libs/select2/.jshintignore
Executable file
4
public/libs/select2/.jshintignore
Executable file
@@ -0,0 +1,4 @@
|
|||||||
|
src/js/banner.*.js
|
||||||
|
src/js/wrapper.*.js
|
||||||
|
tests/vendor/*.js
|
||||||
|
tests/helpers.js
|
||||||
25
public/libs/select2/.jshintrc
Executable file
25
public/libs/select2/.jshintrc
Executable file
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"bitwise": true,
|
||||||
|
"camelcase": true,
|
||||||
|
"curly": true,
|
||||||
|
"es3": true,
|
||||||
|
"eqnull": true,
|
||||||
|
"freeze": true,
|
||||||
|
"globals": {
|
||||||
|
"console": false,
|
||||||
|
"define": false,
|
||||||
|
"document": false,
|
||||||
|
"MockContainer": false,
|
||||||
|
"module": false,
|
||||||
|
"QUnit": false,
|
||||||
|
"require": false,
|
||||||
|
"test": false,
|
||||||
|
"window": false
|
||||||
|
},
|
||||||
|
"indent": 2,
|
||||||
|
"maxlen": 80,
|
||||||
|
"noarg": true,
|
||||||
|
"nonew": true,
|
||||||
|
"quotmark": "single",
|
||||||
|
"undef": true
|
||||||
|
}
|
||||||
22
public/libs/select2/.travis.yml
Executable file
22
public/libs/select2/.travis.yml
Executable file
@@ -0,0 +1,22 @@
|
|||||||
|
language: node_js
|
||||||
|
|
||||||
|
sudo: false
|
||||||
|
|
||||||
|
node_js:
|
||||||
|
- 0.10
|
||||||
|
|
||||||
|
env:
|
||||||
|
global:
|
||||||
|
- secure: XMNK8GVxkwKa6oLl7nJwgg/wmY1YDk5rrMd+UXz26EDCsMDbiy1P7GhN2fEiBSLaQ7YfEuvaDcmzQxTrT0YTHp1PDzb2o9J4tIDdEkqPcv1y8xMaYDfmsN0rBPdBwZEg9H5zUgi7OdUbrGswSYxsKCE3x8EOqK89104HyOo1LN4=
|
||||||
|
- secure: BU5BPRx6H4O3WJ509YPixjUxg+hDF3z2BVJX6NiGmKWweqvCEYFfiiHLwDEgp/ynRcF9vGVi1V4Ly1jq7f8NIajbDZ5q443XchZFYFg78K/EwD5mK6LYt16zb7+Jn0KbzwHeGRGzc9AvcEYlW6i634cSCm4n3BnqtF5PpogSzdw=
|
||||||
|
|
||||||
|
script:
|
||||||
|
- grunt ci
|
||||||
|
|
||||||
|
notifications:
|
||||||
|
email: false
|
||||||
|
irc:
|
||||||
|
channels:
|
||||||
|
- "chat.freenode.net#select2"
|
||||||
|
on_success: change
|
||||||
|
on_failure: always
|
||||||
204
public/libs/select2/CONTRIBUTING.md
Executable file
204
public/libs/select2/CONTRIBUTING.md
Executable file
@@ -0,0 +1,204 @@
|
|||||||
|
Contributing to Select2
|
||||||
|
=======================
|
||||||
|
Looking to contribute something to Select2? **Here's how you can help.**
|
||||||
|
|
||||||
|
Please take a moment to review this document in order to make the contribution
|
||||||
|
process easy and effective for everyone involved.
|
||||||
|
|
||||||
|
Following these guidelines helps to communicate that you respect the time of
|
||||||
|
the developers managing and developing this open source project. In return,
|
||||||
|
they should reciprocate that respect in addressing your issue or assessing
|
||||||
|
patches and features.
|
||||||
|
|
||||||
|
Using the issue tracker
|
||||||
|
-----------------------
|
||||||
|
When [reporting bugs][reporting-bugs] or
|
||||||
|
[requesting features][requesting-features], the
|
||||||
|
[issue tracker on GitHub][issue-tracker] is the recommended channel to use.
|
||||||
|
|
||||||
|
The issue tracker **is not** a place for support requests. The
|
||||||
|
[mailing list][community] or [IRC channel][community] are better places to
|
||||||
|
get help.
|
||||||
|
|
||||||
|
Reporting bugs with Select2
|
||||||
|
---------------------------
|
||||||
|
We really appreciate clear bug reports that _consistently_ show an issue
|
||||||
|
_within Select2_.
|
||||||
|
|
||||||
|
The ideal bug report follows these guidelines:
|
||||||
|
|
||||||
|
1. **Use the [GitHub issue search][issue-search]** — Check if the issue
|
||||||
|
has already been reported.
|
||||||
|
2. **Check if the issue has been fixed** — Try to reproduce the problem
|
||||||
|
using the code in the `master` branch.
|
||||||
|
3. **Isolate the problem** — Try to create an
|
||||||
|
[isolated test case][isolated-case] that consistently reproduces the problem.
|
||||||
|
|
||||||
|
Please try to be as detailed as possible in your bug report, especially if an
|
||||||
|
isolated test case cannot be made. Some useful questions to include the answer
|
||||||
|
to are:
|
||||||
|
|
||||||
|
- What steps can be used to reproduce the issue?
|
||||||
|
- What is the bug and what is the expected outcome?
|
||||||
|
- What browser(s) and Operating System have you tested with?
|
||||||
|
- Does the bug happen consistently across all tested browsers?
|
||||||
|
- What version of jQuery are you using? And what version of Select2?
|
||||||
|
- Are you using Select2 with other plugins?
|
||||||
|
|
||||||
|
All of these questions will help others fix and identify any potential bugs.
|
||||||
|
|
||||||
|
Requesting features in Select2
|
||||||
|
------------------------------
|
||||||
|
Select2 is a large library that carries with it a lot of functionality. Because
|
||||||
|
of this, many feature requests will not be implemented in the core library.
|
||||||
|
|
||||||
|
Before starting work on a major feature for Select2, **contact the
|
||||||
|
[community][community] first** or you may risk spending a considerable amount of
|
||||||
|
time on something which the project developers are not interested in bringing
|
||||||
|
into the project.
|
||||||
|
|
||||||
|
Contributing changes to Select2
|
||||||
|
-------------------------------
|
||||||
|
Select2 is made up of multiple submodules that all come together to make the
|
||||||
|
standard and extended builds that are available to users. The build system uses
|
||||||
|
Node.js to manage and compile the submodules, all of which is done using the
|
||||||
|
Grunt build system.
|
||||||
|
|
||||||
|
### Installing development dependencies
|
||||||
|
|
||||||
|
Select2 can be built and developed on any system which supports Node.js. The
|
||||||
|
preferred Node.js version is 0.10, but 0.12 and later versions can be used
|
||||||
|
without any noticeable issues. You can download Node.js at
|
||||||
|
[their website][nodejs].
|
||||||
|
|
||||||
|
All other required Node.js packages can be installed using [npm][npm], which
|
||||||
|
comes bundled alongside Node.js.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /path/to/select2/repo
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
You may need to install libsass on your system if it is not already available
|
||||||
|
in order to build the SASS files which generate the CSS for themes and the main
|
||||||
|
component.
|
||||||
|
|
||||||
|
In order to build and serve the documentation, you need to have [Jekyll][jekyll]
|
||||||
|
installed on your system.
|
||||||
|
|
||||||
|
### Building the Select2 component
|
||||||
|
|
||||||
|
Select2 uses the [Grunt][grunt] build task system and defines a few custom
|
||||||
|
tasks for common routines. One of them is the `compile` task, which compiles
|
||||||
|
the JavaScript and CSS and produces the final files.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /path/to/select2/repo
|
||||||
|
grunt compile
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also generate the minified versions (`.min.js` files) by executing the
|
||||||
|
`minify` task after compiling.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /path/to/select2/repo
|
||||||
|
grunt minify
|
||||||
|
```
|
||||||
|
|
||||||
|
### Building the documentation
|
||||||
|
|
||||||
|
Using the Grunt build system, you run Jekyll and serve the documentation
|
||||||
|
locally. This will also set up the examples to use the latest version of
|
||||||
|
Select2 that has been built.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /path/to/select2/repo
|
||||||
|
grunt docs
|
||||||
|
```
|
||||||
|
|
||||||
|
### Running tests
|
||||||
|
|
||||||
|
Select2 uses the QUnit test system to test individual components.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /path/to/selct2/repo
|
||||||
|
grunt test
|
||||||
|
```
|
||||||
|
|
||||||
|
### Submitting a pull request
|
||||||
|
|
||||||
|
We use GitHub's pull request system for submitting patches. Here are some
|
||||||
|
guidelines to follow when creating the pull request for your fix.
|
||||||
|
|
||||||
|
1. Make sure to create a ticket for your pull request. This will serve as the
|
||||||
|
bug ticket, and any discussion about the bug will take place there. Your pull
|
||||||
|
request will be focused on the specific changes that fix the bug.
|
||||||
|
2. Make sure to reference the ticket you are fixing within your pull request.
|
||||||
|
This will allow us to close off the ticket once we merge the pull request, or
|
||||||
|
follow up on the ticket if there are any related blocking issues.
|
||||||
|
3. Explain why the specific change was made. Not everyone who is reviewing your
|
||||||
|
pull request will be familiar with the problem it is fixing.
|
||||||
|
4. Run your tests first. If your tests aren't passing, the pull request won't
|
||||||
|
be able to be merged. If you're breaking existing tests, make sure that you
|
||||||
|
aren't causing any breaking changes.
|
||||||
|
5. Only include source changes. While it's not required, only including changes
|
||||||
|
from the `src` directory will prevent merge conflicts from occuring. Making
|
||||||
|
this happen can be as a simple as not committing changes from the `dist`
|
||||||
|
directory.
|
||||||
|
|
||||||
|
By following these steps, you will make it easier for your pull request to be
|
||||||
|
reviewed and eventually merged.
|
||||||
|
|
||||||
|
Triaging issues and pull requests
|
||||||
|
---------------------------------
|
||||||
|
Anyone can help the project maintainers triage issues and review pull requests.
|
||||||
|
|
||||||
|
### Handling new issues
|
||||||
|
|
||||||
|
Select2 regularly receives new issues which need to be tested and organized.
|
||||||
|
|
||||||
|
When a new issue that comes in that is similar to another existing issue, it
|
||||||
|
should be checked to make sure it is not a duplicate. Duplicates issues should
|
||||||
|
be marked by replying to the issue with "Duplicate of #[issue number]" where
|
||||||
|
`[issue number]` is the url or issue number for the existing issue. This will
|
||||||
|
allow the project maintainers to quickly close off additional issues and keep
|
||||||
|
the discussion focused within a single issue.
|
||||||
|
|
||||||
|
If you can test issues that are reported to Select2 that contain test cases and
|
||||||
|
confirm under what conditions bugs happen, that will allow others to identify
|
||||||
|
what causes a bug quicker.
|
||||||
|
|
||||||
|
### Reviewing pull requests
|
||||||
|
|
||||||
|
It is very common for pull requests to be opened for issues that contain a clear
|
||||||
|
solution to the problem. These pull requests should be rigorously reviewed by
|
||||||
|
the community before being accepted. If you are not sure about a piece of
|
||||||
|
submitted code, or know of a better way to do something, do not hesitate to make
|
||||||
|
a comment on the pull request.
|
||||||
|
|
||||||
|
### Reviving old tickets
|
||||||
|
|
||||||
|
If you come across tickets which have not been updated for a while, you are
|
||||||
|
encouraged to revive them. While this can be as simple as saying `:+1:`, it is
|
||||||
|
best if you can include more information on the issue. Common bugs and feature
|
||||||
|
requests are more likely to be fixed, whether it is by the community or the
|
||||||
|
developers, so keeping tickets up to date is encouraged.
|
||||||
|
|
||||||
|
Licensing
|
||||||
|
---------
|
||||||
|
|
||||||
|
It should also be made clear that **all code contributed to Select** must be
|
||||||
|
licensable under the [MIT license][licensing]. Code that cannot be released
|
||||||
|
under this license **cannot be accepted** into the project.
|
||||||
|
|
||||||
|
[community]: https://select2.github.io/community.html
|
||||||
|
[grunt]: http://gruntjs.com/
|
||||||
|
[isolated-case]: http://css-tricks.com/6263-reduced-test-cases/
|
||||||
|
[issue-search]: https://github.com/select2/select2/search?q=&type=Issues
|
||||||
|
[issue-tracker]: https://github.com/select2/select2/issues
|
||||||
|
[jekyll]: https://jekyllrb.com/docs/installation/
|
||||||
|
[licensing]: https://github.com/select2/select2/blob/master/LICENSE.md
|
||||||
|
[nodejs]: https://nodejs.org/
|
||||||
|
[npm]: https://www.npmjs.com/
|
||||||
|
[reporting-bugs]: #reporting-bugs-with-select2
|
||||||
|
[requesting-features]: #requesting-features-in-select2
|
||||||
370
public/libs/select2/Gruntfile.js
vendored
Executable file
370
public/libs/select2/Gruntfile.js
vendored
Executable file
@@ -0,0 +1,370 @@
|
|||||||
|
module.exports = function (grunt) {
|
||||||
|
// Full list of files that must be included by RequireJS
|
||||||
|
includes = [
|
||||||
|
'jquery.select2',
|
||||||
|
'almond',
|
||||||
|
|
||||||
|
'jquery-mousewheel' // shimmed for non-full builds
|
||||||
|
];
|
||||||
|
|
||||||
|
fullIncludes = [
|
||||||
|
'jquery',
|
||||||
|
|
||||||
|
'select2/compat/containerCss',
|
||||||
|
'select2/compat/dropdownCss',
|
||||||
|
|
||||||
|
'select2/compat/initSelection',
|
||||||
|
'select2/compat/inputData',
|
||||||
|
'select2/compat/matcher',
|
||||||
|
'select2/compat/query',
|
||||||
|
|
||||||
|
'select2/dropdown/attachContainer',
|
||||||
|
'select2/dropdown/stopPropagation',
|
||||||
|
|
||||||
|
'select2/selection/stopPropagation'
|
||||||
|
].concat(includes);
|
||||||
|
|
||||||
|
var i18nModules = [];
|
||||||
|
var i18nPaths = {};
|
||||||
|
|
||||||
|
var i18nFiles = grunt.file.expand({
|
||||||
|
cwd: 'src/js'
|
||||||
|
}, 'select2/i18n/*.js');
|
||||||
|
|
||||||
|
var testFiles = grunt.file.expand('tests/**/*.html');
|
||||||
|
var testUrls = testFiles.map(function (filePath) {
|
||||||
|
return 'http://localhost:9999/' + filePath;
|
||||||
|
});
|
||||||
|
|
||||||
|
var testBuildNumber = "unknown";
|
||||||
|
|
||||||
|
if (process.env.TRAVIS_JOB_ID) {
|
||||||
|
testBuildNumber = "travis-" + process.env.TRAVIS_JOB_ID;
|
||||||
|
} else {
|
||||||
|
var currentTime = new Date();
|
||||||
|
|
||||||
|
testBuildNumber = "manual-" + currentTime.getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < i18nFiles.length; i++) {
|
||||||
|
var file = i18nFiles[i];
|
||||||
|
var name = file.split('.')[0];
|
||||||
|
|
||||||
|
i18nModules.push({
|
||||||
|
name: name
|
||||||
|
});
|
||||||
|
|
||||||
|
i18nPaths[name] = '../../' + name;
|
||||||
|
}
|
||||||
|
|
||||||
|
var minifiedBanner = '/*! Select2 <%= package.version %> | https://github.com/select2/select2/blob/master/LICENSE.md */';
|
||||||
|
|
||||||
|
grunt.initConfig({
|
||||||
|
package: grunt.file.readJSON('package.json'),
|
||||||
|
|
||||||
|
clean: {
|
||||||
|
docs: ['docs/_site']
|
||||||
|
},
|
||||||
|
|
||||||
|
concat: {
|
||||||
|
'dist': {
|
||||||
|
options: {
|
||||||
|
banner: grunt.file.read('src/js/wrapper.start.js'),
|
||||||
|
},
|
||||||
|
src: [
|
||||||
|
'dist/js/select2.js',
|
||||||
|
'src/js/wrapper.end.js'
|
||||||
|
],
|
||||||
|
dest: 'dist/js/select2.js'
|
||||||
|
},
|
||||||
|
'dist.full': {
|
||||||
|
options: {
|
||||||
|
banner: grunt.file.read('src/js/wrapper.start.js'),
|
||||||
|
},
|
||||||
|
src: [
|
||||||
|
'dist/js/select2.full.js',
|
||||||
|
'src/js/wrapper.end.js'
|
||||||
|
],
|
||||||
|
dest: 'dist/js/select2.full.js'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
connect: {
|
||||||
|
tests: {
|
||||||
|
options: {
|
||||||
|
base: '.',
|
||||||
|
hostname: '127.0.0.1',
|
||||||
|
port: 9999
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
uglify: {
|
||||||
|
'dist': {
|
||||||
|
src: 'dist/js/select2.js',
|
||||||
|
dest: 'dist/js/select2.min.js',
|
||||||
|
options: {
|
||||||
|
banner: minifiedBanner
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'dist.full': {
|
||||||
|
src: 'dist/js/select2.full.js',
|
||||||
|
dest: 'dist/js/select2.full.min.js',
|
||||||
|
options: {
|
||||||
|
banner: minifiedBanner
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
qunit: {
|
||||||
|
all: {
|
||||||
|
options: {
|
||||||
|
urls: testUrls
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
'saucelabs-qunit': {
|
||||||
|
all: {
|
||||||
|
options: {
|
||||||
|
build: testBuildNumber,
|
||||||
|
tags: ['tests', 'qunit'],
|
||||||
|
urls: testUrls,
|
||||||
|
testname: 'QUnit test for Select2',
|
||||||
|
browsers: [
|
||||||
|
{
|
||||||
|
browserName: 'internet explorer',
|
||||||
|
version: '8'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
browserName: 'internet explorer',
|
||||||
|
version: '9'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
browserName: 'internet explorer',
|
||||||
|
version: '10'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
browserName: 'internet explorer',
|
||||||
|
version: '11'
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
browserName: 'firefox',
|
||||||
|
platform: 'linux'
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
browserName: 'chrome'
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
browserName: 'opera',
|
||||||
|
version: '12',
|
||||||
|
platform: 'linux'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
'gh-pages': {
|
||||||
|
options: {
|
||||||
|
base: 'docs',
|
||||||
|
branch: 'master',
|
||||||
|
clone: 'node_modules/grunt-gh-pages/repo',
|
||||||
|
message: 'Updated docs with master',
|
||||||
|
push: true,
|
||||||
|
repo: 'git@github.com:select2/select2.github.io.git'
|
||||||
|
},
|
||||||
|
src: '**'
|
||||||
|
},
|
||||||
|
|
||||||
|
jekyll: {
|
||||||
|
options: {
|
||||||
|
src: 'docs',
|
||||||
|
dest: 'docs/_site'
|
||||||
|
},
|
||||||
|
build: {
|
||||||
|
d: null
|
||||||
|
},
|
||||||
|
serve: {
|
||||||
|
options: {
|
||||||
|
serve: true,
|
||||||
|
watch: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
jshint: {
|
||||||
|
options: {
|
||||||
|
jshintrc: true
|
||||||
|
},
|
||||||
|
code: {
|
||||||
|
src: ['src/js/**/*.js']
|
||||||
|
},
|
||||||
|
tests: {
|
||||||
|
src: ['tests/**/*.js']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
sass: {
|
||||||
|
dist: {
|
||||||
|
options: {
|
||||||
|
outputStyle: 'compressed'
|
||||||
|
},
|
||||||
|
files: {
|
||||||
|
'dist/css/select2.min.css': [
|
||||||
|
'src/scss/core.scss',
|
||||||
|
'src/scss/theme/default/layout.css'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dev: {
|
||||||
|
options: {
|
||||||
|
outputStyle: 'nested'
|
||||||
|
},
|
||||||
|
files: {
|
||||||
|
'dist/css/select2.css': [
|
||||||
|
'src/scss/core.scss',
|
||||||
|
'src/scss/theme/default/layout.css'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
symlink: {
|
||||||
|
docs: {
|
||||||
|
cwd: 'dist',
|
||||||
|
expand: true,
|
||||||
|
overwrite: false,
|
||||||
|
src: [
|
||||||
|
'*'
|
||||||
|
],
|
||||||
|
dest: 'docs/dist',
|
||||||
|
filter: 'isDirectory'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
requirejs: {
|
||||||
|
'dist': {
|
||||||
|
options: {
|
||||||
|
baseUrl: 'src/js',
|
||||||
|
optimize: 'none',
|
||||||
|
name: 'select2/core',
|
||||||
|
out: 'dist/js/select2.js',
|
||||||
|
include: includes,
|
||||||
|
namespace: 'S2',
|
||||||
|
paths: {
|
||||||
|
'almond': require.resolve('almond').slice(0, -3),
|
||||||
|
'jquery': 'jquery.shim',
|
||||||
|
'jquery-mousewheel': 'jquery.mousewheel.shim'
|
||||||
|
},
|
||||||
|
wrap: {
|
||||||
|
startFile: 'src/js/banner.start.js',
|
||||||
|
endFile: 'src/js/banner.end.js'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'dist.full': {
|
||||||
|
options: {
|
||||||
|
baseUrl: 'src/js',
|
||||||
|
optimize: 'none',
|
||||||
|
name: 'select2/core',
|
||||||
|
out: 'dist/js/select2.full.js',
|
||||||
|
include: fullIncludes,
|
||||||
|
namespace: 'S2',
|
||||||
|
paths: {
|
||||||
|
'almond': require.resolve('almond').slice(0, -3),
|
||||||
|
'jquery': 'jquery.shim',
|
||||||
|
'jquery-mousewheel': require.resolve('jquery-mousewheel').slice(0, -3)
|
||||||
|
},
|
||||||
|
wrap: {
|
||||||
|
startFile: 'src/js/banner.start.js',
|
||||||
|
endFile: 'src/js/banner.end.js'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'i18n': {
|
||||||
|
options: {
|
||||||
|
baseUrl: 'src/js/select2/i18n',
|
||||||
|
dir: 'dist/js/i18n',
|
||||||
|
paths: i18nPaths,
|
||||||
|
modules: i18nModules,
|
||||||
|
namespace: 'S2',
|
||||||
|
wrap: {
|
||||||
|
start: minifiedBanner + grunt.file.read('src/js/banner.start.js'),
|
||||||
|
end: grunt.file.read('src/js/banner.end.js')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
watch: {
|
||||||
|
js: {
|
||||||
|
files: [
|
||||||
|
'src/js/select2/**/*.js',
|
||||||
|
'tests/**/*.js'
|
||||||
|
],
|
||||||
|
tasks: [
|
||||||
|
'compile',
|
||||||
|
'test',
|
||||||
|
'minify'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
css: {
|
||||||
|
files: [
|
||||||
|
'src/scss/**/*.scss'
|
||||||
|
],
|
||||||
|
tasks: [
|
||||||
|
'compile',
|
||||||
|
'minify'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-clean');
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-concat');
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-connect');
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-jshint');
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-qunit');
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-requirejs');
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-symlink');
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-uglify');
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-watch');
|
||||||
|
|
||||||
|
grunt.loadNpmTasks('grunt-gh-pages');
|
||||||
|
grunt.loadNpmTasks('grunt-jekyll');
|
||||||
|
grunt.loadNpmTasks('grunt-saucelabs');
|
||||||
|
grunt.loadNpmTasks('grunt-sass');
|
||||||
|
|
||||||
|
grunt.registerTask('default', ['compile', 'test', 'minify']);
|
||||||
|
|
||||||
|
grunt.registerTask('compile', [
|
||||||
|
'requirejs:dist', 'requirejs:dist.full', 'requirejs:i18n',
|
||||||
|
'concat:dist', 'concat:dist.full',
|
||||||
|
'sass:dev'
|
||||||
|
]);
|
||||||
|
grunt.registerTask('minify', ['uglify', 'sass:dist']);
|
||||||
|
grunt.registerTask('test', ['connect:tests', 'qunit', 'jshint']);
|
||||||
|
|
||||||
|
var ciTasks = [];
|
||||||
|
|
||||||
|
ciTasks.push('compile')
|
||||||
|
ciTasks.push('connect:tests');
|
||||||
|
|
||||||
|
// Can't run Sauce Labs tests in pull requests
|
||||||
|
if (process.env.TRAVIS_PULL_REQUEST == 'false') {
|
||||||
|
ciTasks.push('saucelabs-qunit');
|
||||||
|
}
|
||||||
|
|
||||||
|
ciTasks.push('qunit');
|
||||||
|
ciTasks.push('jshint');
|
||||||
|
|
||||||
|
grunt.registerTask('ci', ciTasks);
|
||||||
|
|
||||||
|
grunt.registerTask('docs', ['symlink:docs', 'jekyll:serve']);
|
||||||
|
|
||||||
|
grunt.registerTask('docs-release', ['default', 'clean:docs', 'gh-pages']);
|
||||||
|
};
|
||||||
46
public/libs/select2/ISSUE_TEMPLATE.md
Executable file
46
public/libs/select2/ISSUE_TEMPLATE.md
Executable file
@@ -0,0 +1,46 @@
|
|||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
- [ ] I have searched for similar issues in both open and closed tickets and cannot find a duplicate
|
||||||
|
- [ ] The issue still exists against the latest `master` branch of Select2
|
||||||
|
- [ ] This is not a usage question (Those should be directed to the [community](https://select2.github.io/community.html))
|
||||||
|
- [ ] I have attempted to find the simplest possible steos to reproduce the issue
|
||||||
|
- [ ] I have included a failing test as a pull request (Optional)
|
||||||
|
|
||||||
|
## Steps to reproduce the issue
|
||||||
|
|
||||||
|
1.
|
||||||
|
2.
|
||||||
|
3.
|
||||||
|
|
||||||
|
## Expected behavior and actual behavior
|
||||||
|
|
||||||
|
When I follow those steps, I see...
|
||||||
|
|
||||||
|
I was expecting...
|
||||||
|
|
||||||
|
## Environment
|
||||||
|
|
||||||
|
Browsers
|
||||||
|
|
||||||
|
- [ ] Google Chrome
|
||||||
|
- [ ] Mozilla Firefox
|
||||||
|
- [ ] Internet Explorer
|
||||||
|
|
||||||
|
Operating System
|
||||||
|
|
||||||
|
- [ ] Windows
|
||||||
|
- [ ] Mac OS X
|
||||||
|
- [ ] Linux
|
||||||
|
- [ ] Mobile
|
||||||
|
|
||||||
|
Libraries
|
||||||
|
|
||||||
|
- jQuery version:
|
||||||
|
- Select2 version:
|
||||||
|
|
||||||
|
## Isolating the problem
|
||||||
|
|
||||||
|
- [ ] This bug happens [on the examples page](https://select2.github.io/examples.html)
|
||||||
|
- [ ] The bug happens consistently across all tested browsers
|
||||||
|
- [ ] This bug happens when using Select2 without other pluigns
|
||||||
|
- [ ] I can reproduce this bug in [a jsbin](https://jsbin.com/)
|
||||||
21
public/libs/select2/LICENSE.md
Executable file
21
public/libs/select2/LICENSE.md
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2012-2015 Kevin Brown, Igor Vaynberg, and Select2 contributors
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
13
public/libs/select2/PULL_REQUEST_TEMPLATE.md
Executable file
13
public/libs/select2/PULL_REQUEST_TEMPLATE.md
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
This pull request includes a
|
||||||
|
|
||||||
|
- [ ] Bug fix
|
||||||
|
- [ ] New feature
|
||||||
|
- [ ] Translation
|
||||||
|
|
||||||
|
The following changes were made
|
||||||
|
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
|
||||||
|
If this is related to an existing ticket, include a link to it as well.
|
||||||
121
public/libs/select2/README.md
Executable file
121
public/libs/select2/README.md
Executable file
@@ -0,0 +1,121 @@
|
|||||||
|
Select2
|
||||||
|
=======
|
||||||
|
[![Build Status][travis-ci-image]][travis-ci-status]
|
||||||
|
|
||||||
|
Select2 is a jQuery-based replacement for select boxes. It supports searching,
|
||||||
|
remote data sets, and pagination of results.
|
||||||
|
|
||||||
|
To get started, checkout examples and documentation at
|
||||||
|
https://select2.github.io/
|
||||||
|
|
||||||
|
Use cases
|
||||||
|
---------
|
||||||
|
* Enhancing native selects with search.
|
||||||
|
* Enhancing native selects with a better multi-select interface.
|
||||||
|
* Loading data from JavaScript: easily load items via AJAX and have them
|
||||||
|
searchable.
|
||||||
|
* Nesting optgroups: native selects only support one level of nesting. Select2
|
||||||
|
does not have this restriction.
|
||||||
|
* Tagging: ability to add new items on the fly.
|
||||||
|
* Working with large, remote datasets: ability to partially load a dataset based
|
||||||
|
on the search term.
|
||||||
|
* Paging of large datasets: easy support for loading more pages when the results
|
||||||
|
are scrolled to the end.
|
||||||
|
* Templating: support for custom rendering of results and selections.
|
||||||
|
|
||||||
|
Browser compatibility
|
||||||
|
---------------------
|
||||||
|
* IE 8+
|
||||||
|
* Chrome 8+
|
||||||
|
* Firefox 10+
|
||||||
|
* Safari 3+
|
||||||
|
* Opera 10.6+
|
||||||
|
|
||||||
|
Select2 is automatically tested on the following browsers.
|
||||||
|
|
||||||
|
[![Sauce Labs Test Status][saucelabs-matrix]][saucelabs-status]
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
You can source Select2 directly from a CDN like [JSDliver][jsdelivr] or
|
||||||
|
[CDNJS][cdnjs], [download it from this GitHub repo][releases], or use one of
|
||||||
|
the integrations below.
|
||||||
|
|
||||||
|
Integrations
|
||||||
|
------------
|
||||||
|
Third party developers have create plugins for platforms which allow Select2 to be integrated more natively and quickly. For many platforms, additional plugins are not required because Select2 acts as a standard `<select>` box.
|
||||||
|
|
||||||
|
Plugins
|
||||||
|
|
||||||
|
* [Django]
|
||||||
|
- [django-easy-select2]
|
||||||
|
- [django-select2]
|
||||||
|
* [Meteor] - [meteor-select2]
|
||||||
|
* [Ruby on Rails][ruby-on-rails] - [select2-rails]
|
||||||
|
* [Wicket] - [wicketstuff-select2]
|
||||||
|
* [Yii 2][yii2] - [yii2-widget-select2]
|
||||||
|
|
||||||
|
Themes
|
||||||
|
|
||||||
|
- [Bootstrap 3][bootstrap3] - [select2-bootstrap-theme]
|
||||||
|
- [Flat UI][flat-ui] - [select2-flat-theme]
|
||||||
|
- [Metro UI][metro-ui] - [select2-metro]
|
||||||
|
|
||||||
|
Missing an integration? Modify this `README` and make a pull request back here to Select2 on GitHub.
|
||||||
|
|
||||||
|
Internationalization (i18n)
|
||||||
|
---------------------------
|
||||||
|
Select2 supports multiple languages by simply including the right language JS
|
||||||
|
file (`dist/js/i18n/it.js`, `dist/js/i18n/nl.js`, etc.) after
|
||||||
|
`dist/js/select2.js`.
|
||||||
|
|
||||||
|
Missing a language? Just copy `src/js/select2/i18n/en.js`, translate it, and
|
||||||
|
make a pull request back to Select2 here on GitHub.
|
||||||
|
|
||||||
|
Documentation
|
||||||
|
-------------
|
||||||
|
The documentation for Select2 is available
|
||||||
|
[through GitHub Pages][documentation] and is located within this repository
|
||||||
|
in the [`docs` folder][documentation-folder].
|
||||||
|
|
||||||
|
Community
|
||||||
|
---------
|
||||||
|
You can find out about the different ways to get in touch with the Select2
|
||||||
|
community at the [Select2 community page][community].
|
||||||
|
|
||||||
|
Copyright and license
|
||||||
|
---------------------
|
||||||
|
The license is available within the repository in the [LICENSE][license] file.
|
||||||
|
|
||||||
|
[cdnjs]: http://www.cdnjs.com/libraries/select2
|
||||||
|
[community]: https://select2.github.io/community.html
|
||||||
|
[documentation]: https://select2.github.io/
|
||||||
|
[documentation-folder]: https://github.com/select2/select2/tree/master/docs
|
||||||
|
[freenode]: https://freenode.net/
|
||||||
|
[jsdelivr]: http://www.jsdelivr.com/#!select2
|
||||||
|
[license]: LICENSE.md
|
||||||
|
[releases]: https://github.com/select2/select2/releases
|
||||||
|
[saucelabs-matrix]: https://saucelabs.com/browser-matrix/select2.svg
|
||||||
|
[saucelabs-status]: https://saucelabs.com/u/select2
|
||||||
|
[travis-ci-image]: https://img.shields.io/travis/select2/select2/master.svg
|
||||||
|
[travis-ci-status]: https://travis-ci.org/select2/select2
|
||||||
|
|
||||||
|
[bootstrap3]: https://getbootstrap.com/
|
||||||
|
[django]: https://www.djangoproject.com/
|
||||||
|
[django-easy-select2]: https://github.com/asyncee/django-easy-select2
|
||||||
|
[django-select2]: https://github.com/applegrew/django-select2
|
||||||
|
[flat-ui]: http://designmodo.github.io/Flat-UI/
|
||||||
|
[meteor]: https://www.meteor.com/
|
||||||
|
[meteor-select2]: https://github.com/nate-strauser/meteor-select2
|
||||||
|
[metro-ui]: http://metroui.org.ua/
|
||||||
|
[select2-metro]: http://metroui.org.ua/select2.html
|
||||||
|
[ruby-on-rails]: http://rubyonrails.org/
|
||||||
|
[select2-bootstrap-theme]: https://github.com/select2/select2-bootstrap-theme
|
||||||
|
[select2-flat-theme]: https://github.com/techhysahil/select2-Flat_Theme
|
||||||
|
[select2-rails]: https://github.com/argerim/select2-rails
|
||||||
|
[vue.js]: http://vuejs.org/
|
||||||
|
[select2-vue]: http://vuejs.org/examples/select2.html
|
||||||
|
[wicket]: https://wicket.apache.org/
|
||||||
|
[wicketstuff-select2]: https://github.com/wicketstuff/core/tree/master/select2-parent
|
||||||
|
[yii2]: http://www.yiiframework.com/
|
||||||
|
[yii2-widget-select2]: https://github.com/kartik-v/yii2-widget-select2
|
||||||
12
public/libs/select2/bower.json
Executable file
12
public/libs/select2/bower.json
Executable file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"name": "select2",
|
||||||
|
"description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.",
|
||||||
|
"main": [
|
||||||
|
"dist/js/select2.js",
|
||||||
|
"src/scss/core.scss"
|
||||||
|
],
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git@github.com:select2/select2.git"
|
||||||
|
}
|
||||||
|
}
|
||||||
19
public/libs/select2/component.json
Executable file
19
public/libs/select2/component.json
Executable file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"name": "select2",
|
||||||
|
"repo": "select/select2",
|
||||||
|
"description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.",
|
||||||
|
"version": "4.0.3",
|
||||||
|
"demo": "https://select2.github.io/",
|
||||||
|
"keywords": [
|
||||||
|
"jquery"
|
||||||
|
],
|
||||||
|
"main": "dist/js/select2.js",
|
||||||
|
"styles": [
|
||||||
|
"dist/css/select2.css"
|
||||||
|
],
|
||||||
|
"scripts": [
|
||||||
|
"dist/js/select2.js",
|
||||||
|
"dist/js/i18n/*.js"
|
||||||
|
],
|
||||||
|
"license": "MIT"
|
||||||
|
}
|
||||||
25
public/libs/select2/composer.json
Executable file
25
public/libs/select2/composer.json
Executable file
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"name": "select2/select2",
|
||||||
|
"description": "Select2 is a jQuery based replacement for select boxes.",
|
||||||
|
"type": "component",
|
||||||
|
"homepage": "https://select2.github.io/",
|
||||||
|
"license": "MIT",
|
||||||
|
"require": {
|
||||||
|
"robloach/component-installer": "*"
|
||||||
|
},
|
||||||
|
"extra": {
|
||||||
|
"component": {
|
||||||
|
"scripts": [
|
||||||
|
"dist/js/select2.js"
|
||||||
|
],
|
||||||
|
"styles": [
|
||||||
|
"dist/css/select2.css"
|
||||||
|
],
|
||||||
|
"files": [
|
||||||
|
"dist/js/select2.js",
|
||||||
|
"dist/js/i18n/*.js",
|
||||||
|
"dist/css/select2.css"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
484
public/libs/select2/dist/css/select2.css
vendored
Executable file
484
public/libs/select2/dist/css/select2.css
vendored
Executable file
@@ -0,0 +1,484 @@
|
|||||||
|
.select2-container {
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0;
|
||||||
|
position: relative;
|
||||||
|
vertical-align: middle; }
|
||||||
|
.select2-container .select2-selection--single {
|
||||||
|
box-sizing: border-box;
|
||||||
|
cursor: pointer;
|
||||||
|
display: block;
|
||||||
|
height: 28px;
|
||||||
|
user-select: none;
|
||||||
|
-webkit-user-select: none; }
|
||||||
|
.select2-container .select2-selection--single .select2-selection__rendered {
|
||||||
|
display: block;
|
||||||
|
padding-left: 8px;
|
||||||
|
padding-right: 20px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap; }
|
||||||
|
.select2-container .select2-selection--single .select2-selection__clear {
|
||||||
|
position: relative; }
|
||||||
|
.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered {
|
||||||
|
padding-right: 8px;
|
||||||
|
padding-left: 20px; }
|
||||||
|
.select2-container .select2-selection--multiple {
|
||||||
|
box-sizing: border-box;
|
||||||
|
cursor: pointer;
|
||||||
|
display: block;
|
||||||
|
min-height: 32px;
|
||||||
|
user-select: none;
|
||||||
|
-webkit-user-select: none; }
|
||||||
|
.select2-container .select2-selection--multiple .select2-selection__rendered {
|
||||||
|
display: inline-block;
|
||||||
|
overflow: hidden;
|
||||||
|
padding-left: 8px;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap; }
|
||||||
|
.select2-container .select2-search--inline {
|
||||||
|
float: left; }
|
||||||
|
.select2-container .select2-search--inline .select2-search__field {
|
||||||
|
box-sizing: border-box;
|
||||||
|
border: none;
|
||||||
|
font-size: 100%;
|
||||||
|
margin-top: 5px;
|
||||||
|
padding: 0; }
|
||||||
|
.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {
|
||||||
|
-webkit-appearance: none; }
|
||||||
|
|
||||||
|
.select2-dropdown {
|
||||||
|
background-color: white;
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
border-radius: 4px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
left: -100000px;
|
||||||
|
width: 100%;
|
||||||
|
z-index: 1051; }
|
||||||
|
|
||||||
|
.select2-results {
|
||||||
|
display: block; }
|
||||||
|
|
||||||
|
.select2-results__options {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0; }
|
||||||
|
|
||||||
|
.select2-results__option {
|
||||||
|
padding: 6px;
|
||||||
|
user-select: none;
|
||||||
|
-webkit-user-select: none; }
|
||||||
|
.select2-results__option[aria-selected] {
|
||||||
|
cursor: pointer; }
|
||||||
|
|
||||||
|
.select2-container--open .select2-dropdown {
|
||||||
|
left: 0; }
|
||||||
|
|
||||||
|
.select2-container--open .select2-dropdown--above {
|
||||||
|
border-bottom: none;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
border-bottom-right-radius: 0; }
|
||||||
|
|
||||||
|
.select2-container--open .select2-dropdown--below {
|
||||||
|
border-top: none;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 0; }
|
||||||
|
|
||||||
|
.select2-search--dropdown {
|
||||||
|
display: block;
|
||||||
|
padding: 4px; }
|
||||||
|
.select2-search--dropdown .select2-search__field {
|
||||||
|
padding: 4px;
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box; }
|
||||||
|
.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {
|
||||||
|
-webkit-appearance: none; }
|
||||||
|
.select2-search--dropdown.select2-search--hide {
|
||||||
|
display: none; }
|
||||||
|
|
||||||
|
.select2-close-mask {
|
||||||
|
border: 0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
display: block;
|
||||||
|
position: fixed;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
min-height: 100%;
|
||||||
|
min-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
width: auto;
|
||||||
|
opacity: 0;
|
||||||
|
z-index: 99;
|
||||||
|
background-color: #fff;
|
||||||
|
filter: alpha(opacity=0); }
|
||||||
|
|
||||||
|
.select2-hidden-accessible {
|
||||||
|
border: 0 !important;
|
||||||
|
clip: rect(0 0 0 0) !important;
|
||||||
|
height: 1px !important;
|
||||||
|
margin: -1px !important;
|
||||||
|
overflow: hidden !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
position: absolute !important;
|
||||||
|
width: 1px !important; }
|
||||||
|
|
||||||
|
.select2-container--default .select2-selection--single {
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
border-radius: 4px; }
|
||||||
|
.select2-container--default .select2-selection--single .select2-selection__rendered {
|
||||||
|
color: #444;
|
||||||
|
line-height: 28px; }
|
||||||
|
.select2-container--default .select2-selection--single .select2-selection__clear {
|
||||||
|
cursor: pointer;
|
||||||
|
float: right;
|
||||||
|
font-weight: bold; }
|
||||||
|
.select2-container--default .select2-selection--single .select2-selection__placeholder {
|
||||||
|
color: #999; }
|
||||||
|
.select2-container--default .select2-selection--single .select2-selection__arrow {
|
||||||
|
height: 26px;
|
||||||
|
position: absolute;
|
||||||
|
top: 1px;
|
||||||
|
right: 1px;
|
||||||
|
width: 20px; }
|
||||||
|
.select2-container--default .select2-selection--single .select2-selection__arrow b {
|
||||||
|
border-color: #888 transparent transparent transparent;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 5px 4px 0 4px;
|
||||||
|
height: 0;
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -4px;
|
||||||
|
margin-top: -2px;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
width: 0; }
|
||||||
|
|
||||||
|
.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear {
|
||||||
|
float: left; }
|
||||||
|
|
||||||
|
.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow {
|
||||||
|
left: 1px;
|
||||||
|
right: auto; }
|
||||||
|
|
||||||
|
.select2-container--default.select2-container--disabled .select2-selection--single {
|
||||||
|
background-color: #eee;
|
||||||
|
cursor: default; }
|
||||||
|
.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {
|
||||||
|
display: none; }
|
||||||
|
|
||||||
|
.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {
|
||||||
|
border-color: transparent transparent #888 transparent;
|
||||||
|
border-width: 0 4px 5px 4px; }
|
||||||
|
|
||||||
|
.select2-container--default .select2-selection--multiple {
|
||||||
|
background-color: white;
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: text; }
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__rendered {
|
||||||
|
box-sizing: border-box;
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0 5px;
|
||||||
|
width: 100%; }
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__rendered li {
|
||||||
|
list-style: none; }
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__placeholder {
|
||||||
|
color: #999;
|
||||||
|
margin-top: 5px;
|
||||||
|
float: left; }
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__clear {
|
||||||
|
cursor: pointer;
|
||||||
|
float: right;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-top: 5px;
|
||||||
|
margin-right: 10px; }
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__choice {
|
||||||
|
background-color: #e4e4e4;
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: default;
|
||||||
|
float: left;
|
||||||
|
margin-right: 5px;
|
||||||
|
margin-top: 5px;
|
||||||
|
padding: 0 5px; }
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
|
||||||
|
color: #999;
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-block;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-right: 2px; }
|
||||||
|
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
|
||||||
|
color: #333; }
|
||||||
|
|
||||||
|
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline {
|
||||||
|
float: right; }
|
||||||
|
|
||||||
|
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
|
||||||
|
margin-left: 5px;
|
||||||
|
margin-right: auto; }
|
||||||
|
|
||||||
|
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
|
||||||
|
margin-left: 2px;
|
||||||
|
margin-right: auto; }
|
||||||
|
|
||||||
|
.select2-container--default.select2-container--focus .select2-selection--multiple {
|
||||||
|
border: solid black 1px;
|
||||||
|
outline: 0; }
|
||||||
|
|
||||||
|
.select2-container--default.select2-container--disabled .select2-selection--multiple {
|
||||||
|
background-color: #eee;
|
||||||
|
cursor: default; }
|
||||||
|
|
||||||
|
.select2-container--default.select2-container--disabled .select2-selection__choice__remove {
|
||||||
|
display: none; }
|
||||||
|
|
||||||
|
.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 0; }
|
||||||
|
|
||||||
|
.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
border-bottom-right-radius: 0; }
|
||||||
|
|
||||||
|
.select2-container--default .select2-search--dropdown .select2-search__field {
|
||||||
|
border: 1px solid #aaa; }
|
||||||
|
|
||||||
|
.select2-container--default .select2-search--inline .select2-search__field {
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
outline: 0;
|
||||||
|
box-shadow: none;
|
||||||
|
-webkit-appearance: textfield; }
|
||||||
|
|
||||||
|
.select2-container--default .select2-results > .select2-results__options {
|
||||||
|
max-height: 200px;
|
||||||
|
overflow-y: auto; }
|
||||||
|
|
||||||
|
.select2-container--default .select2-results__option[role=group] {
|
||||||
|
padding: 0; }
|
||||||
|
|
||||||
|
.select2-container--default .select2-results__option[aria-disabled=true] {
|
||||||
|
color: #999; }
|
||||||
|
|
||||||
|
.select2-container--default .select2-results__option[aria-selected=true] {
|
||||||
|
background-color: #ddd; }
|
||||||
|
|
||||||
|
.select2-container--default .select2-results__option .select2-results__option {
|
||||||
|
padding-left: 1em; }
|
||||||
|
.select2-container--default .select2-results__option .select2-results__option .select2-results__group {
|
||||||
|
padding-left: 0; }
|
||||||
|
.select2-container--default .select2-results__option .select2-results__option .select2-results__option {
|
||||||
|
margin-left: -1em;
|
||||||
|
padding-left: 2em; }
|
||||||
|
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
|
||||||
|
margin-left: -2em;
|
||||||
|
padding-left: 3em; }
|
||||||
|
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
|
||||||
|
margin-left: -3em;
|
||||||
|
padding-left: 4em; }
|
||||||
|
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
|
||||||
|
margin-left: -4em;
|
||||||
|
padding-left: 5em; }
|
||||||
|
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
|
||||||
|
margin-left: -5em;
|
||||||
|
padding-left: 6em; }
|
||||||
|
|
||||||
|
.select2-container--default .select2-results__option--highlighted[aria-selected] {
|
||||||
|
background-color: #5897fb;
|
||||||
|
color: white; }
|
||||||
|
|
||||||
|
.select2-container--default .select2-results__group {
|
||||||
|
cursor: default;
|
||||||
|
display: block;
|
||||||
|
padding: 6px; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-selection--single {
|
||||||
|
background-color: #f7f7f7;
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
border-radius: 4px;
|
||||||
|
outline: 0;
|
||||||
|
background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%);
|
||||||
|
background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);
|
||||||
|
background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
|
||||||
|
.select2-container--classic .select2-selection--single:focus {
|
||||||
|
border: 1px solid #5897fb; }
|
||||||
|
.select2-container--classic .select2-selection--single .select2-selection__rendered {
|
||||||
|
color: #444;
|
||||||
|
line-height: 28px; }
|
||||||
|
.select2-container--classic .select2-selection--single .select2-selection__clear {
|
||||||
|
cursor: pointer;
|
||||||
|
float: right;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-right: 10px; }
|
||||||
|
.select2-container--classic .select2-selection--single .select2-selection__placeholder {
|
||||||
|
color: #999; }
|
||||||
|
.select2-container--classic .select2-selection--single .select2-selection__arrow {
|
||||||
|
background-color: #ddd;
|
||||||
|
border: none;
|
||||||
|
border-left: 1px solid #aaa;
|
||||||
|
border-top-right-radius: 4px;
|
||||||
|
border-bottom-right-radius: 4px;
|
||||||
|
height: 26px;
|
||||||
|
position: absolute;
|
||||||
|
top: 1px;
|
||||||
|
right: 1px;
|
||||||
|
width: 20px;
|
||||||
|
background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); }
|
||||||
|
.select2-container--classic .select2-selection--single .select2-selection__arrow b {
|
||||||
|
border-color: #888 transparent transparent transparent;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 5px 4px 0 4px;
|
||||||
|
height: 0;
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -4px;
|
||||||
|
margin-top: -2px;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
width: 0; }
|
||||||
|
|
||||||
|
.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear {
|
||||||
|
float: left; }
|
||||||
|
|
||||||
|
.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow {
|
||||||
|
border: none;
|
||||||
|
border-right: 1px solid #aaa;
|
||||||
|
border-radius: 0;
|
||||||
|
border-top-left-radius: 4px;
|
||||||
|
border-bottom-left-radius: 4px;
|
||||||
|
left: 1px;
|
||||||
|
right: auto; }
|
||||||
|
|
||||||
|
.select2-container--classic.select2-container--open .select2-selection--single {
|
||||||
|
border: 1px solid #5897fb; }
|
||||||
|
.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow {
|
||||||
|
background: transparent;
|
||||||
|
border: none; }
|
||||||
|
.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b {
|
||||||
|
border-color: transparent transparent #888 transparent;
|
||||||
|
border-width: 0 4px 5px 4px; }
|
||||||
|
|
||||||
|
.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single {
|
||||||
|
border-top: none;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%);
|
||||||
|
background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);
|
||||||
|
background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
|
||||||
|
|
||||||
|
.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single {
|
||||||
|
border-bottom: none;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);
|
||||||
|
background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-selection--multiple {
|
||||||
|
background-color: white;
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: text;
|
||||||
|
outline: 0; }
|
||||||
|
.select2-container--classic .select2-selection--multiple:focus {
|
||||||
|
border: 1px solid #5897fb; }
|
||||||
|
.select2-container--classic .select2-selection--multiple .select2-selection__rendered {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0 5px; }
|
||||||
|
.select2-container--classic .select2-selection--multiple .select2-selection__clear {
|
||||||
|
display: none; }
|
||||||
|
.select2-container--classic .select2-selection--multiple .select2-selection__choice {
|
||||||
|
background-color: #e4e4e4;
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: default;
|
||||||
|
float: left;
|
||||||
|
margin-right: 5px;
|
||||||
|
margin-top: 5px;
|
||||||
|
padding: 0 5px; }
|
||||||
|
.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove {
|
||||||
|
color: #888;
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-block;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-right: 2px; }
|
||||||
|
.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover {
|
||||||
|
color: #555; }
|
||||||
|
|
||||||
|
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
|
||||||
|
float: right; }
|
||||||
|
|
||||||
|
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
|
||||||
|
margin-left: 5px;
|
||||||
|
margin-right: auto; }
|
||||||
|
|
||||||
|
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
|
||||||
|
margin-left: 2px;
|
||||||
|
margin-right: auto; }
|
||||||
|
|
||||||
|
.select2-container--classic.select2-container--open .select2-selection--multiple {
|
||||||
|
border: 1px solid #5897fb; }
|
||||||
|
|
||||||
|
.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple {
|
||||||
|
border-top: none;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 0; }
|
||||||
|
|
||||||
|
.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple {
|
||||||
|
border-bottom: none;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
border-bottom-right-radius: 0; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-search--dropdown .select2-search__field {
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
outline: 0; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-search--inline .select2-search__field {
|
||||||
|
outline: 0;
|
||||||
|
box-shadow: none; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-dropdown {
|
||||||
|
background-color: white;
|
||||||
|
border: 1px solid transparent; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-dropdown--above {
|
||||||
|
border-bottom: none; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-dropdown--below {
|
||||||
|
border-top: none; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-results > .select2-results__options {
|
||||||
|
max-height: 200px;
|
||||||
|
overflow-y: auto; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-results__option[role=group] {
|
||||||
|
padding: 0; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-results__option[aria-disabled=true] {
|
||||||
|
color: grey; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-results__option--highlighted[aria-selected] {
|
||||||
|
background-color: #3875d7;
|
||||||
|
color: white; }
|
||||||
|
|
||||||
|
.select2-container--classic .select2-results__group {
|
||||||
|
cursor: default;
|
||||||
|
display: block;
|
||||||
|
padding: 6px; }
|
||||||
|
|
||||||
|
.select2-container--classic.select2-container--open .select2-dropdown {
|
||||||
|
border-color: #5897fb; }
|
||||||
1
public/libs/select2/dist/css/select2.min.css
vendored
Executable file
1
public/libs/select2/dist/css/select2.min.css
vendored
Executable file
File diff suppressed because one or more lines are too long
3
public/libs/select2/dist/js/i18n/ar.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/ar.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ar",[],function(){return{errorLoading:function(){return"لا يمكن تحميل النتائج"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="الرجاء حذف "+t+" عناصر";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="الرجاء إضافة "+t+" عناصر";return n},loadingMore:function(){return"جاري تحميل نتائج إضافية..."},maximumSelected:function(e){var t="تستطيع إختيار "+e.maximum+" بنود فقط";return t},noResults:function(){return"لم يتم العثور على أي نتائج"},searching:function(){return"جاري البحث…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/az.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/az.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/az",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return t+" simvol silin"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t+" simvol daxil edin"},loadingMore:function(){return"Daha çox nəticə yüklənir…"},maximumSelected:function(e){return"Sadəcə "+e.maximum+" element seçə bilərsiniz"},noResults:function(){return"Nəticə tapılmadı"},searching:function(){return"Axtarılır…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/bg.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/bg.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bg",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Моля въведете с "+t+" по-малко символ";return t>1&&(n+="a"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Моля въведете още "+t+" символ";return t>1&&(n+="a"),n},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(e){var t="Можете да направите до "+e.maximum+" ";return e.maximum>1?t+="избора":t+="избор",t},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/ca.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/ca.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Si us plau, elimina "+t+" car";return t==1?n+="àcter":n+="àcters",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Si us plau, introdueix "+t+" car";return t==1?n+="àcter":n+="àcters",n},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var t="Només es pot seleccionar "+e.maximum+" element";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/cs.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/cs.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/cs",[],function(){function e(e,t){switch(e){case 2:return t?"dva":"dvě";case 3:return"tři";case 4:return"čtyři"}return""}return{errorLoading:function(){return"Výsledky nemohly být načteny."},inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím zadejte o jeden znak méně":n<=4?"Prosím zadejte o "+e(n,!0)+" znaky méně":"Prosím zadejte o "+n+" znaků méně"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím zadejte ještě jeden znak":n<=4?"Prosím zadejte ještě další "+e(n,!0)+" znaky":"Prosím zadejte ještě dalších "+n+" znaků"},loadingMore:function(){return"Načítají se další výsledky…"},maximumSelected:function(t){var n=t.maximum;return n==1?"Můžete zvolit jen jednu položku":n<=4?"Můžete zvolit maximálně "+e(n,!1)+" položky":"Můžete zvolit maximálně "+n+" položek"},noResults:function(){return"Nenalezeny žádné položky"},searching:function(){return"Vyhledávání…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/da.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/da.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/da",[],function(){return{errorLoading:function(){return"Resultaterne kunne ikke indlæses."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Angiv venligst "+t+" tegn mindre";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Angiv venligst "+t+" tegn mere";return n},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var t="Du kan kun vælge "+e.maximum+" emne";return e.maximum!=1&&(t+="r"),t},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/de.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/de.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/de",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Bitte "+t+" Zeichen weniger eingeben"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Bitte "+t+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var t="Sie können nur "+e.maximum+" Eintr";return e.maximum===1?t+="ag":t+="äge",t+=" auswählen",t},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/el.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/el.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/el",[],function(){return{errorLoading:function(){return"Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Παρακαλώ διαγράψτε "+t+" χαρακτήρ";return t==1&&(n+="α"),t!=1&&(n+="ες"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Παρακαλώ συμπληρώστε "+t+" ή περισσότερους χαρακτήρες";return n},loadingMore:function(){return"Φόρτωση περισσότερων αποτελεσμάτων…"},maximumSelected:function(e){var t="Μπορείτε να επιλέξετε μόνο "+e.maximum+" επιλογ";return e.maximum==1&&(t+="ή"),e.maximum!=1&&(t+="ές"),t},noResults:function(){return"Δεν βρέθηκαν αποτελέσματα"},searching:function(){return"Αναζήτηση…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/en.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/en.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Please delete "+t+" character";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Please enter "+t+" or more characters";return n},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var t="You can only select "+e.maximum+" item";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/es.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/es.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/es",[],function(){return{errorLoading:function(){return"La carga falló"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor, elimine "+t+" car";return t==1?n+="ácter":n+="acteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Por favor, introduzca "+t+" car";return t==1?n+="ácter":n+="acteres",n},loadingMore:function(){return"Cargando más resultados…"},maximumSelected:function(e){var t="Sólo puede seleccionar "+e.maximum+" elemento";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No se encontraron resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/et.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/et.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/et",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" vähem",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" rohkem",n},loadingMore:function(){return"Laen tulemusi…"},maximumSelected:function(e){var t="Saad vaid "+e.maximum+" tulemus";return e.maximum==1?t+="e":t+="t",t+=" valida",t},noResults:function(){return"Tulemused puuduvad"},searching:function(){return"Otsin…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/eu.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/eu.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/eu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gutxiago",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gehiago",n},loadingMore:function(){return"Emaitza gehiago kargatzen…"},maximumSelected:function(e){return e.maximum===1?"Elementu bakarra hauta dezakezu":e.maximum+" elementu hauta ditzakezu soilik"},noResults:function(){return"Ez da bat datorrenik aurkitu"},searching:function(){return"Bilatzen…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/fa.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/fa.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fa",[],function(){return{errorLoading:function(){return"امکان بارگذاری نتایج وجود ندارد."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="لطفاً "+t+" کاراکتر را حذف نمایید";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="لطفاً تعداد "+t+" کاراکتر یا بیشتر وارد نمایید";return n},loadingMore:function(){return"در حال بارگذاری نتایج بیشتر..."},maximumSelected:function(e){var t="شما تنها میتوانید "+e.maximum+" آیتم را انتخاب نمایید";return t},noResults:function(){return"هیچ نتیجهای یافت نشد"},searching:function(){return"در حال جستجو..."}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/fi.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/fi.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Ole hyvä ja anna "+t+" merkkiä vähemmän"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Ole hyvä ja anna "+t+" merkkiä lisää"},loadingMore:function(){return"Ladataan lisää tuloksia…"},maximumSelected:function(e){return"Voit valita ainoastaan "+e.maximum+" kpl"},noResults:function(){return"Ei tuloksia"},searching:function(){}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/fr.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/fr.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fr",[],function(){return{errorLoading:function(){return"Les résultats ne peuvent pas être chargés."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Supprimez "+t+" caractère";return t!==1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Saisissez "+t+" caractère";return t!==1&&(n+="s"),n},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){var t="Vous pouvez seulement sélectionner "+e.maximum+" élément";return e.maximum!==1&&(t+="s"),t},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/gl.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/gl.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/gl",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Elimine ";return t===1?n+="un carácter":n+=t+" caracteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Engada ";return t===1?n+="un carácter":n+=t+" caracteres",n},loadingMore:function(){return"Cargando máis resultados…"},maximumSelected:function(e){var t="Só pode ";return e.maximum===1?t+="un elemento":t+=e.maximum+" elementos",t},noResults:function(){return"Non se atoparon resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/he.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/he.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/he",[],function(){return{errorLoading:function(){return"שגיאה בטעינת התוצאות"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="נא למחוק ";return t===1?n+="תו אחד":n+=t+" תווים",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="נא להכניס ";return t===1?n+="תו אחד":n+=t+" תווים",n+=" או יותר",n},loadingMore:function(){return"טוען תוצאות נוספות…"},maximumSelected:function(e){var t="באפשרותך לבחור עד ";return e.maximum===1?t+="פריט אחד":t+=e.maximum+" פריטים",t},noResults:function(){return"לא נמצאו תוצאות"},searching:function(){return"מחפש…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/hi.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/hi.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hi",[],function(){return{errorLoading:function(){return"परिणामों को लोड नहीं किया जा सका।"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" अक्षर को हटा दें";return t>1&&(n=t+" अक्षरों को हटा दें "),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="कृपया "+t+" या अधिक अक्षर दर्ज करें";return n},loadingMore:function(){return"अधिक परिणाम लोड हो रहे है..."},maximumSelected:function(e){var t="आप केवल "+e.maximum+" आइटम का चयन कर सकते हैं";return t},noResults:function(){return"कोई परिणाम नहीं मिला"},searching:function(){return"खोज रहा है..."}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/hr.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/hr.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hr",[],function(){function e(e){var t=" "+e+" znak";return e%10<5&&e%10>0&&(e%100<5||e%100>19)?e%10>1&&(t+="a"):t+="ova",t}return{errorLoading:function(){return"Preuzimanje nije uspjelo."},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Unesite "+e(n)},inputTooShort:function(t){var n=t.minimum-t.input.length;return"Unesite još "+e(n)},loadingMore:function(){return"Učitavanje rezultata…"},maximumSelected:function(e){return"Maksimalan broj odabranih stavki je "+e.maximum},noResults:function(){return"Nema rezultata"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/hu.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/hu.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Túl hosszú. "+t+" karakterrel több, mint kellene."},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Túl rövid. Még "+t+" karakter hiányzik."},loadingMore:function(){return"Töltés…"},maximumSelected:function(e){return"Csak "+e.maximum+" elemet lehet kiválasztani."},noResults:function(){return"Nincs találat."},searching:function(){return"Keresés…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/id.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/id.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/id",[],function(){return{errorLoading:function(){return"Data tidak boleh diambil."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Hapuskan "+t+" huruf"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Masukkan "+t+" huruf lagi"},loadingMore:function(){return"Mengambil data…"},maximumSelected:function(e){return"Anda hanya dapat memilih "+e.maximum+" pilihan"},noResults:function(){return"Tidak ada data yang sesuai"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/is.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/is.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/is",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vinsamlegast styttið texta um "+t+" staf";return t<=1?n:n+"i"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vinsamlegast skrifið "+t+" staf";return t>1&&(n+="i"),n+=" í viðbót",n},loadingMore:function(){return"Sæki fleiri niðurstöður…"},maximumSelected:function(e){return"Þú getur aðeins valið "+e.maximum+" atriði"},noResults:function(){return"Ekkert fannst"},searching:function(){return"Leita…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/it.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/it.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Per favore cancella "+t+" caratter";return t!==1?n+="i":n+="e",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Per favore inserisci "+t+" o più caratteri";return n},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(e){var t="Puoi selezionare solo "+e.maximum+" element";return e.maximum!==1?t+="i":t+="o",t},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/ja.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/ja.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ja",[],function(){return{errorLoading:function(){return"結果が読み込まれませんでした"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" 文字を削除してください";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="少なくとも "+t+" 文字を入力してください";return n},loadingMore:function(){return"読み込み中…"},maximumSelected:function(e){var t=e.maximum+" 件しか選択できません";return t},noResults:function(){return"対象が見つかりません"},searching:function(){return"検索しています…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/km.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/km.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/km",[],function(){return{errorLoading:function(){return"មិនអាចទាញយកទិន្នន័យ"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="សូមលុបចេញ "+t+" អក្សរ";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="សូមបញ្ចូល"+t+" អក្សរ រឺ ច្រើនជាងនេះ";return n},loadingMore:function(){return"កំពុងទាញយកទិន្នន័យបន្ថែម..."},maximumSelected:function(e){var t="អ្នកអាចជ្រើសរើសបានតែ "+e.maximum+" ជម្រើសប៉ុណ្ណោះ";return t},noResults:function(){return"មិនមានលទ្ធផល"},searching:function(){return"កំពុងស្វែងរក..."}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/ko.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/ko.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="너무 깁니다. "+t+" 글자 지워주세요.";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="너무 짧습니다. "+t+" 글자 더 입력해주세요.";return n},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(e){var t="최대 "+e.maximum+"개까지만 선택 가능합니다.";return t},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/lt.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/lt.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lt",[],function(){function e(e,t,n,r){return e%10===1&&(e%100<11||e%100>19)?t:e%10>=2&&e%10<=9&&(e%100<11||e%100>19)?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Pašalinkite "+n+" simbol";return r+=e(n,"į","ius","ių"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Įrašykite dar "+n+" simbol";return r+=e(n,"į","ius","ių"),r},loadingMore:function(){return"Kraunama daugiau rezultatų…"},maximumSelected:function(t){var n="Jūs galite pasirinkti tik "+t.maximum+" element";return n+=e(t.maximum,"ą","us","ų"),n},noResults:function(){return"Atitikmenų nerasta"},searching:function(){return"Ieškoma…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/lv.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/lv.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lv",[],function(){function e(e,t,n,r){return e===11?t:e%10===1?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Lūdzu ievadiet par "+n;return r+=" simbol"+e(n,"iem","u","iem"),r+" mazāk"},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Lūdzu ievadiet vēl "+n;return r+=" simbol"+e(n,"us","u","us"),r},loadingMore:function(){return"Datu ielāde…"},maximumSelected:function(t){var n="Jūs varat izvēlēties ne vairāk kā "+t.maximum;return n+=" element"+e(t.maximum,"us","u","us"),n},noResults:function(){return"Sakritību nav"},searching:function(){return"Meklēšana…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/mk.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/mk.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/mk",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Ве молиме внесете "+e.maximum+" помалку карактер";return e.maximum!==1&&(n+="и"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Ве молиме внесете уште "+e.maximum+" карактер";return e.maximum!==1&&(n+="и"),n},loadingMore:function(){return"Вчитување резултати…"},maximumSelected:function(e){var t="Можете да изберете само "+e.maximum+" ставк";return e.maximum===1?t+="а":t+="и",t},noResults:function(){return"Нема пронајдено совпаѓања"},searching:function(){return"Пребарување…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/ms.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/ms.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ms",[],function(){return{errorLoading:function(){return"Keputusan tidak berjaya dimuatkan."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Sila hapuskan "+t+" aksara"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Sila masukkan "+t+" atau lebih aksara"},loadingMore:function(){return"Sedang memuatkan keputusan…"},maximumSelected:function(e){return"Anda hanya boleh memilih "+e.maximum+" pilihan"},noResults:function(){return"Tiada padanan yang ditemui"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/nb.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/nb.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nb",[],function(){return{errorLoading:function(){return"Kunne ikke hente resultater."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Vennligst fjern "+t+" tegn"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vennligst skriv inn ";return t>1?n+=" flere tegn":n+=" tegn til",n},loadingMore:function(){return"Laster flere resultater…"},maximumSelected:function(e){return"Du kan velge maks "+e.maximum+" elementer"},noResults:function(){return"Ingen treff"},searching:function(){return"Søker…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/nl.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/nl.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Gelieve "+t+" karakters te verwijderen";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Gelieve "+t+" of meer karakters in te voeren";return n},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(e){var t=e.maximum==1?"kan":"kunnen",n="Er "+t+" maar "+e.maximum+" item";return e.maximum!=1&&(n+="s"),n+=" worden geselecteerd",n},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/pl.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/pl.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pl",[],function(){var e=["znak","znaki","znaków"],t=["element","elementy","elementów"],n=function(t,n){if(t===1)return n[0];if(t>1&&t<=4)return n[1];if(t>=5)return n[2]};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Usuń "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Podaj przynajmniej "+r+" "+n(r,e)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(e){return"Możesz zaznaczyć tylko "+e.maximum+" "+n(e.maximum,t)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/pt-BR.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/pt-BR.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt-BR",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Apague "+t+" caracter";return t!=1&&(n+="es"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Digite "+t+" ou mais caracteres";return n},loadingMore:function(){return"Carregando mais resultados…"},maximumSelected:function(e){var t="Você só pode selecionar "+e.maximum+" ite";return e.maximum==1?t+="m":t+="ns",t},noResults:function(){return"Nenhum resultado encontrado"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/pt.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/pt.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor apague "+t+" ";return n+=t!=1?"caracteres":"carácter",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Introduza "+t+" ou mais caracteres";return n},loadingMore:function(){return"A carregar mais resultados…"},maximumSelected:function(e){var t="Apenas pode seleccionar "+e.maximum+" ";return t+=e.maximum!=1?"itens":"item",t},noResults:function(){return"Sem resultados"},searching:function(){return"A procurar…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/ro.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/ro.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ro",[],function(){return{errorLoading:function(){return"Rezultatele nu au putut fi incărcate."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vă rugăm să ștergeți"+t+" caracter";return t!==1&&(n+="e"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vă rugăm să introduceți "+t+"sau mai multe caractere";return n},loadingMore:function(){return"Se încarcă mai multe rezultate…"},maximumSelected:function(e){var t="Aveți voie să selectați cel mult "+e.maximum;return t+=" element",e.maximum!==1&&(t+="e"),t},noResults:function(){return"Nu au fost găsite rezultate"},searching:function(){return"Căutare…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/ru.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/ru.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ru",[],function(){function e(e,t,n,r){return e%10<5&&e%10>0&&e%100<5||e%100>20?e%10>1?n:t:r}return{errorLoading:function(){return"Невозможно загрузить результаты"},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Пожалуйста, введите на "+n+" символ";return r+=e(n,"","a","ов"),r+=" меньше",r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Пожалуйста, введите еще хотя бы "+n+" символ";return r+=e(n,"","a","ов"),r},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(t){var n="Вы можете выбрать не более "+t.maximum+" элемент";return n+=e(t.maximum,"","a","ов"),n},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/sk.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/sk.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sk",[],function(){var e={2:function(e){return e?"dva":"dve"},3:function(){return"tri"},4:function(){return"štyri"}};return{inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím, zadajte o jeden znak menej":n>=2&&n<=4?"Prosím, zadajte o "+e[n](!0)+" znaky menej":"Prosím, zadajte o "+n+" znakov menej"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím, zadajte ešte jeden znak":n<=4?"Prosím, zadajte ešte ďalšie "+e[n](!0)+" znaky":"Prosím, zadajte ešte ďalších "+n+" znakov"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(t){return t.maximum==1?"Môžete zvoliť len jednu položku":t.maximum>=2&&t.maximum<=4?"Môžete zvoliť najviac "+e[t.maximum](!1)+" položky":"Môžete zvoliť najviac "+t.maximum+" položiek"},noResults:function(){return"Nenašli sa žiadne položky"},searching:function(){return"Vyhľadávanie…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/sr-Cyrl.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/sr-Cyrl.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr-Cyrl",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Преузимање није успело."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Обришите "+n+" симбол";return r+=e(n,"","а","а"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Укуцајте бар још "+n+" симбол";return r+=e(n,"","а","а"),r},loadingMore:function(){return"Преузимање још резултата…"},maximumSelected:function(t){var n="Можете изабрати само "+t.maximum+" ставк";return n+=e(t.maximum,"у","е","и"),n},noResults:function(){return"Ништа није пронађено"},searching:function(){return"Претрага…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/sr.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/sr.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Preuzimanje nije uspelo."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Obrišite "+n+" simbol";return r+=e(n,"","a","a"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Ukucajte bar još "+n+" simbol";return r+=e(n,"","a","a"),r},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(t){var n="Možete izabrati samo "+t.maximum+" stavk";return n+=e(t.maximum,"u","e","i"),n},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/sv.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/sv.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sv",[],function(){return{errorLoading:function(){return"Resultat kunde inte laddas."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vänligen sudda ut "+t+" tecken";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vänligen skriv in "+t+" eller fler tecken";return n},loadingMore:function(){return"Laddar fler resultat…"},maximumSelected:function(e){var t="Du kan max välja "+e.maximum+" element";return t},noResults:function(){return"Inga träffar"},searching:function(){return"Söker…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/th.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/th.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/th",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="โปรดลบออก "+t+" ตัวอักษร";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="โปรดพิมพ์เพิ่มอีก "+t+" ตัวอักษร";return n},loadingMore:function(){return"กำลังค้นข้อมูลเพิ่ม…"},maximumSelected:function(e){var t="คุณสามารถเลือกได้ไม่เกิน "+e.maximum+" รายการ";return t},noResults:function(){return"ไม่พบข้อมูล"},searching:function(){return"กำลังค้นข้อมูล…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/tr.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/tr.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/tr",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" karakter daha girmelisiniz";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="En az "+t+" karakter daha girmelisiniz";return n},loadingMore:function(){return"Daha fazla…"},maximumSelected:function(e){var t="Sadece "+e.maximum+" seçim yapabilirsiniz";return t},noResults:function(){return"Sonuç bulunamadı"},searching:function(){return"Aranıyor…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/uk.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/uk.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/uk",[],function(){function e(e,t,n,r){return e%100>10&&e%100<15?r:e%10===1?t:e%10>1&&e%10<5?n:r}return{errorLoading:function(){return"Неможливо завантажити результати"},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Будь ласка, видаліть "+n+" "+e(t.maximum,"літеру","літери","літер")},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Будь ласка, введіть "+t+" або більше літер"},loadingMore:function(){return"Завантаження інших результатів…"},maximumSelected:function(t){return"Ви можете вибрати лише "+t.maximum+" "+e(t.maximum,"пункт","пункти","пунктів")},noResults:function(){return"Нічого не знайдено"},searching:function(){return"Пошук…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/vi.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/vi.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/vi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vui lòng nhập ít hơn "+t+" ký tự";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vui lòng nhập nhiều hơn "+t+' ký tự"';return n},loadingMore:function(){return"Đang lấy thêm kết quả…"},maximumSelected:function(e){var t="Chỉ có thể chọn được "+e.maximum+" lựa chọn";return t},noResults:function(){return"Không tìm thấy kết quả"},searching:function(){return"Đang tìm…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/zh-CN.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/zh-CN.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-CN",[],function(){return{errorLoading:function(){return"无法载入结果。"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="请删除"+t+"个字符";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="请再输入至少"+t+"个字符";return n},loadingMore:function(){return"载入更多结果…"},maximumSelected:function(e){var t="最多只能选择"+e.maximum+"个项目";return t},noResults:function(){return"未找到结果"},searching:function(){return"搜索中…"}}}),{define:e.define,require:e.require}})();
|
||||||
3
public/libs/select2/dist/js/i18n/zh-TW.js
vendored
Executable file
3
public/libs/select2/dist/js/i18n/zh-TW.js
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
|
||||||
|
|
||||||
|
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-TW",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="請刪掉"+t+"個字元";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="請再輸入"+t+"個字元";return n},loadingMore:function(){return"載入中…"},maximumSelected:function(e){var t="你只能選擇最多"+e.maximum+"項";return t},noResults:function(){return"沒有找到相符的項目"},searching:function(){return"搜尋中…"}}}),{define:e.define,require:e.require}})();
|
||||||
6436
public/libs/select2/dist/js/select2.full.js
vendored
Executable file
6436
public/libs/select2/dist/js/select2.full.js
vendored
Executable file
File diff suppressed because it is too large
Load Diff
3
public/libs/select2/dist/js/select2.full.min.js
vendored
Executable file
3
public/libs/select2/dist/js/select2.full.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
5725
public/libs/select2/dist/js/select2.js
vendored
Executable file
5725
public/libs/select2/dist/js/select2.js
vendored
Executable file
File diff suppressed because it is too large
Load Diff
3
public/libs/select2/dist/js/select2.min.js
vendored
Executable file
3
public/libs/select2/dist/js/select2.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
2
public/libs/select2/docs/.gitignore
vendored
Executable file
2
public/libs/select2/docs/.gitignore
vendored
Executable file
@@ -0,0 +1,2 @@
|
|||||||
|
_site
|
||||||
|
dist
|
||||||
38
public/libs/select2/docs/README.md
Executable file
38
public/libs/select2/docs/README.md
Executable file
@@ -0,0 +1,38 @@
|
|||||||
|
Select2 Documentation
|
||||||
|
=====================
|
||||||
|
[This repository][select2-docs-source] holds the latest documentation for
|
||||||
|
[Select2][select2].
|
||||||
|
|
||||||
|
What is this?
|
||||||
|
-------------
|
||||||
|
The documentation is automatically extracted from the `docs` directory at the
|
||||||
|
[Select2 source repository][select2-source]. This is done periodically by
|
||||||
|
the maintainers of Select2.
|
||||||
|
|
||||||
|
How can I fix an issue in these docs?
|
||||||
|
-------------------------------------
|
||||||
|
If you are reading this from the source repository, within the `docs` directory,
|
||||||
|
then you're already in the right place. You can fork the source repository,
|
||||||
|
commit your changes, and then make a pull request and it will be reviewed.
|
||||||
|
|
||||||
|
**If you are reading this from the
|
||||||
|
[documentation repository][select2-docs-source], you are in the wrong place.**
|
||||||
|
Pull requests made directly to the documentation repository will be ignored and
|
||||||
|
eventually closed, so don't do that.
|
||||||
|
|
||||||
|
How can I build these docs manually?
|
||||||
|
------------------------------------
|
||||||
|
In the [main Select2 repository][select2-source], you can build the
|
||||||
|
documentation by executing
|
||||||
|
|
||||||
|
```bash
|
||||||
|
grunt docs
|
||||||
|
```
|
||||||
|
|
||||||
|
Which will start up the documentation on port 4000. You will need
|
||||||
|
[Jekyll][jekyll] installed to build the documentation.
|
||||||
|
|
||||||
|
[jekyll]: http://jekyllrb.com/
|
||||||
|
[select2]: https://select2.github.io
|
||||||
|
[select2-docs-source]: https://github.com/select2/select2.github.io
|
||||||
|
[select2-source]: https://github.com/select2/select2
|
||||||
97
public/libs/select2/docs/_includes/examples/basics.html
Executable file
97
public/libs/select2/docs/_includes/examples/basics.html
Executable file
@@ -0,0 +1,97 @@
|
|||||||
|
<section>
|
||||||
|
|
||||||
|
<h1 id="basics" class="page-header">The basics</h1>
|
||||||
|
|
||||||
|
<h2 id="single">Single select boxes</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Select2 can take a regular select box like this...
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<select class="js-states form-control"></select>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
and turn it into this...
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="s2-example">
|
||||||
|
<p>
|
||||||
|
<select class="js-example-basic-single js-states form-control"></select>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% highlight html linenos %}
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready(function() {
|
||||||
|
$(".js-example-basic-single").select2();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<select class="js-example-basic-single">
|
||||||
|
<option value="AL">Alabama</option>
|
||||||
|
...
|
||||||
|
<option value="WY">Wyoming</option>
|
||||||
|
</select>
|
||||||
|
{% endhighlight %}
|
||||||
|
|
||||||
|
<h2 id="multiple">Multiple select boxes</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Select2 also supports multi-value select boxes. The select below is declared with the <code>multiple</code> attribute.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="s2-example">
|
||||||
|
<p>
|
||||||
|
<select class="js-example-basic-multiple js-states form-control" multiple="multiple"></select>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% highlight html linenos %}
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(".js-example-basic-multiple").select2();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<select class="js-example-basic-multiple" multiple="multiple">
|
||||||
|
<option value="AL">Alabama</option>
|
||||||
|
...
|
||||||
|
<option value="WY">Wyoming</option>
|
||||||
|
</select>
|
||||||
|
{% endhighlight %}
|
||||||
|
|
||||||
|
<h2>Select boxes with labels</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
You can, and should, use a <code><label></code> with Select2, just like any other <code><select></code> element.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="s2-example">
|
||||||
|
<p>
|
||||||
|
<label for="id_label_single">
|
||||||
|
Click this to highlight the single select element
|
||||||
|
<select class="js-example-basic-single js-states form-control" id="id_label_single"></select>
|
||||||
|
</label>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<label for="id_label_multiple">
|
||||||
|
Click this to highlight the multiple select element
|
||||||
|
<select class="js-example-basic-multiple js-states form-control" id="id_label_multiple" multiple="multiple"></select>
|
||||||
|
</label>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% highlight html linenos %}
|
||||||
|
<label for="id_label_single">
|
||||||
|
Click this to highlight the single select element
|
||||||
|
|
||||||
|
<select class="js-example-basic-single js-states form-control" id="id_label_single"></select>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label for="id_label_multiple">
|
||||||
|
Click this to highlight the multiple select element
|
||||||
|
|
||||||
|
<select class="js-example-basic-multiple js-states form-control" id="id_label_multiple" multiple="multiple"></select>
|
||||||
|
</label>
|
||||||
|
{% endhighlight %}
|
||||||
|
</section>
|
||||||
123
public/libs/select2/docs/_includes/examples/data.html
Executable file
123
public/libs/select2/docs/_includes/examples/data.html
Executable file
@@ -0,0 +1,123 @@
|
|||||||
|
<section>
|
||||||
|
|
||||||
|
<h1 id="data" class="page-header">
|
||||||
|
Data sources
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<p>In addition to handling options from a standard <code><select></code>, Select2 can also retrieve the results from other data sources.</p>
|
||||||
|
|
||||||
|
<h2 id="data-array" >Loading array data</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Select2 provides a way to load the data from a local array.
|
||||||
|
You can provide initial selections with array data by providing the
|
||||||
|
option tag for the selected values, similar to how it would be done for
|
||||||
|
a standard select.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="s2-example">
|
||||||
|
<p>
|
||||||
|
<select class="js-example-data-array form-control"></select>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<select class="js-example-data-array-selected form-control">
|
||||||
|
<option value="2" selected="selected">duplicate</option>
|
||||||
|
</select>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% highlight html linenos %}
|
||||||
|
<script type="text/javascript">
|
||||||
|
var data = [{ id: 0, text: 'enhancement' }, { id: 1, text: 'bug' }, { id: 2, text: 'duplicate' }, { id: 3, text: 'invalid' }, { id: 4, text: 'wontfix' }];
|
||||||
|
|
||||||
|
$(".js-example-data-array").select2({
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
|
||||||
|
$(".js-example-data-array-selected").select2({
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<select class="js-example-data-array"></select>
|
||||||
|
|
||||||
|
<select class="js-example-data-array-selected">
|
||||||
|
<option value="2" selected="selected">duplicate</option>
|
||||||
|
</select>
|
||||||
|
{% endhighlight %}
|
||||||
|
|
||||||
|
<h2 id="data-ajax" >Loading remote data</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Select2 comes with AJAX support built in, using jQuery's AJAX methods.
|
||||||
|
In this example, we can search for repositories using GitHub's API.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<select class="js-example-data-ajax form-control">
|
||||||
|
<option value="3620194" selected="selected">select2/select2</option>
|
||||||
|
</select>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
When using Select2 with remote data, the HTML required for the
|
||||||
|
<code>select</code> is the same as any other Select2. If you need to
|
||||||
|
provide default selections, you just need to include an
|
||||||
|
<code>option</code> for each selection that contains the value and text
|
||||||
|
that should be displayed.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
{% highlight html linenos %}
|
||||||
|
<select class="js-data-example-ajax">
|
||||||
|
<option value="3620194" selected="selected">select2/select2</option>
|
||||||
|
</select>
|
||||||
|
{% endhighlight %}
|
||||||
|
|
||||||
|
<p>
|
||||||
|
You can configure how Select2 searches for remote data using the
|
||||||
|
<code>ajax</code> option. More information on the individual options
|
||||||
|
that Select2 handles can be found in the
|
||||||
|
<a href="options.html#ajax">options documentation for <code>ajax</code></a>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
{% highlight js linenos %}
|
||||||
|
$(".js-data-example-ajax").select2({
|
||||||
|
ajax: {
|
||||||
|
url: "https://api.github.com/search/repositories",
|
||||||
|
dataType: 'json',
|
||||||
|
delay: 250,
|
||||||
|
data: function (params) {
|
||||||
|
return {
|
||||||
|
q: params.term, // search term
|
||||||
|
page: params.page
|
||||||
|
};
|
||||||
|
},
|
||||||
|
processResults: function (data, params) {
|
||||||
|
// parse the results into the format expected by Select2
|
||||||
|
// since we are using custom formatting functions we do not need to
|
||||||
|
// alter the remote JSON data, except to indicate that infinite
|
||||||
|
// scrolling can be used
|
||||||
|
params.page = params.page || 1;
|
||||||
|
|
||||||
|
return {
|
||||||
|
results: data.items,
|
||||||
|
pagination: {
|
||||||
|
more: (params.page * 30) < data.total_count
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
cache: true
|
||||||
|
},
|
||||||
|
escapeMarkup: function (markup) { return markup; }, // let our custom formatter work
|
||||||
|
minimumInputLength: 1,
|
||||||
|
templateResult: formatRepo, // omitted for brevity, see the source of this page
|
||||||
|
templateSelection: formatRepoSelection // omitted for brevity, see the source of this page
|
||||||
|
});
|
||||||
|
{% endhighlight %}
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Select2 will pass any options in the <code>ajax</code> object to
|
||||||
|
jQuery's <code>$.ajax</code> function, or the <code>transport</code>
|
||||||
|
function you specify.
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
43
public/libs/select2/docs/_includes/examples/disabled-mode.html
Executable file
43
public/libs/select2/docs/_includes/examples/disabled-mode.html
Executable file
@@ -0,0 +1,43 @@
|
|||||||
|
<section>
|
||||||
|
|
||||||
|
<h1 id="disabled">Disabled mode</h1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Select2 will respond to the <code>disabled</code> attribute on
|
||||||
|
<code><select></code> elements. You can also initialize Select2
|
||||||
|
with <code>disabled: true</code> to get the same effect.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="s2-example">
|
||||||
|
<p>
|
||||||
|
<select class="js-example-disabled js-states form-control" disabled="disabled"></select>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<select class="js-example-disabled-multi js-states form-control" multiple="multiple" disabled="disabled"></select>
|
||||||
|
</p>
|
||||||
|
<div class="btn-group btn-group-sm" role="group" aria-label="Programmatic enabling and disabling">
|
||||||
|
<button type="button" class="js-programmatic-enable btn btn-default">
|
||||||
|
Enable
|
||||||
|
</button>
|
||||||
|
<button type="button" class="js-programmatic-disable btn btn-default">
|
||||||
|
Disable
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<pre data-fill-from=".js-code-disabled"></pre>
|
||||||
|
|
||||||
|
<script type="text/javascript" class="js-code-disabled">
|
||||||
|
$(".js-programmatic-enable").on("click", function () {
|
||||||
|
$(".js-example-disabled").prop("disabled", false);
|
||||||
|
$(".js-example-disabled-multi").prop("disabled", false);
|
||||||
|
});
|
||||||
|
|
||||||
|
$(".js-programmatic-disable").on("click", function () {
|
||||||
|
$(".js-example-disabled").prop("disabled", true);
|
||||||
|
$(".js-example-disabled-multi").prop("disabled", true);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</section>
|
||||||
29
public/libs/select2/docs/_includes/examples/disabled-results.html
Executable file
29
public/libs/select2/docs/_includes/examples/disabled-results.html
Executable file
@@ -0,0 +1,29 @@
|
|||||||
|
<section>
|
||||||
|
|
||||||
|
<h1 id="disabled-results">Disabled results</h1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Select2 will correctly handle disabled results, both with data coming
|
||||||
|
from a standard select (when the <code>disabled</code> attribute is set)
|
||||||
|
and from remote sources, where the object has
|
||||||
|
<code>disabled: true</code> set.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="s2-example">
|
||||||
|
<p>
|
||||||
|
<select class="js-example-disabled-results form-control">
|
||||||
|
<option value="one">First</option>
|
||||||
|
<option value="two" disabled="disabled">Second (disabled)</option>
|
||||||
|
<option value="three">Third</option>
|
||||||
|
</select>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% highlight html linenos %}
|
||||||
|
<select class="js-example-disabled-results">
|
||||||
|
<option value="one">First</option>
|
||||||
|
<option value="two" disabled="disabled">Second (disabled)</option>
|
||||||
|
<option value="three">Third</option>
|
||||||
|
</select>
|
||||||
|
{% endhighlight %}
|
||||||
|
</section>
|
||||||
22
public/libs/select2/docs/_includes/examples/hide-search.html
Executable file
22
public/libs/select2/docs/_includes/examples/hide-search.html
Executable file
@@ -0,0 +1,22 @@
|
|||||||
|
<section>
|
||||||
|
|
||||||
|
<h1 id="hide-search">Hiding the search box</h1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Select2 allows you to hide the search box depending on the number of
|
||||||
|
options which are displayed. In this example, we use the value
|
||||||
|
<code>Infinity</code> to tell Select2 to never display the search box.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="s2-example">
|
||||||
|
<p>
|
||||||
|
<select class="js-example-basic-hide-search js-states form-control"></select>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% highlight js linenos %}
|
||||||
|
$(".js-example-basic-hide-search").select2({
|
||||||
|
minimumResultsForSearch: Infinity
|
||||||
|
});
|
||||||
|
{% endhighlight %}
|
||||||
|
</section>
|
||||||
82
public/libs/select2/docs/_includes/examples/localization-rtl-diacritics.html
Executable file
82
public/libs/select2/docs/_includes/examples/localization-rtl-diacritics.html
Executable file
@@ -0,0 +1,82 @@
|
|||||||
|
<section>
|
||||||
|
<h1 id="localization-rtl-diacritics" class="page-header">
|
||||||
|
Localization, RTL and diacritics support
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<h2 id="language">Multiple languages</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Select2 supports displaying the messages in different languages, as well
|
||||||
|
as providing your own
|
||||||
|
<a href="options.html#language">custom messages</a>
|
||||||
|
that can be displayed.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The language does not have to be defined when Select2 is being
|
||||||
|
initialized, but instead can be defined in the <code>[lang]</code>
|
||||||
|
attribute of any parent elements as <code>[lang="es"]</code>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="s2-example">
|
||||||
|
<p>
|
||||||
|
<select class="js-example-language js-states form-control">
|
||||||
|
</select>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% highlight js linenos %}
|
||||||
|
$(".js-example-language").select2({
|
||||||
|
language: "es"
|
||||||
|
});
|
||||||
|
{% endhighlight %}
|
||||||
|
|
||||||
|
<h2 id="rtl">RTL support</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Select2 will work on RTL websites if the <code>dir</code> attribute is
|
||||||
|
set on the <code><select></code> or any parents of it. You can also
|
||||||
|
initialize Select2 with <code>dir: "rtl"</code> set.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="s2-example">
|
||||||
|
<p>
|
||||||
|
<select class="js-example-rtl js-states form-control" dir="rtl"></select>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% highlight js linenos %}
|
||||||
|
$(".js-example-rtl").select2({
|
||||||
|
dir: "rtl"
|
||||||
|
});
|
||||||
|
{% endhighlight %}
|
||||||
|
|
||||||
|
<h2 id="diacritics">Diacritics support</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Select2's default matcher will ignore diacritics, making it easier for
|
||||||
|
users to filter results in international selects. Type "aero" into the
|
||||||
|
select below.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="s2-example">
|
||||||
|
<p>
|
||||||
|
<select class="js-example-diacritics form-control">
|
||||||
|
<option>Aeróbics</option>
|
||||||
|
<option>Aeróbics en Agua</option>
|
||||||
|
<option>Aerografía</option>
|
||||||
|
<option>Aeromodelaje</option>
|
||||||
|
<option>Águilas</option>
|
||||||
|
<option>Ajedrez</option>
|
||||||
|
<option>Ala Delta</option>
|
||||||
|
<option>Álbumes de Música</option>
|
||||||
|
<option>Alusivos</option>
|
||||||
|
<option>Análisis de Escritura a Mano</option>
|
||||||
|
</select>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% highlight js linenos %}
|
||||||
|
$(".js-example-diacritics").select2();
|
||||||
|
{% endhighlight %}
|
||||||
|
</section>
|
||||||
39
public/libs/select2/docs/_includes/examples/matcher.html
Executable file
39
public/libs/select2/docs/_includes/examples/matcher.html
Executable file
@@ -0,0 +1,39 @@
|
|||||||
|
<section>
|
||||||
|
<h1 id="matcher">Customizing how results are matched</h1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Unlike other dropdowns on this page, this one matches options only if
|
||||||
|
the term appears in the beginning of the string as opposed to anywhere:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
This custom matcher uses a
|
||||||
|
<a href="options.html#compat-matcher">compatibility module</a> that is
|
||||||
|
only bundled in the
|
||||||
|
<a href="index.html#builds-full">full version of Select2</a>. You also
|
||||||
|
have the option of using a
|
||||||
|
<a href="options.html#matcher">more complex matcher</a>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="s2-example">
|
||||||
|
<p>
|
||||||
|
<select class="js-example-matcher-start js-states form-control"></select>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% highlight js linenos %}
|
||||||
|
function matchStart (term, text) {
|
||||||
|
if (text.toUpperCase().indexOf(term.toUpperCase()) == 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$.fn.select2.amd.require(['select2/compat/matcher'], function (oldMatcher) {
|
||||||
|
$(".js-example-matcher-start").select2({
|
||||||
|
matcher: oldMatcher(matchStart)
|
||||||
|
})
|
||||||
|
});
|
||||||
|
{% endhighlight %}
|
||||||
|
</section>
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user