Skip to content

Commit

Permalink
Initial release
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexisSerneels committed Mar 5, 2021
0 parents commit a16ff8d
Show file tree
Hide file tree
Showing 11 changed files with 511 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
node_modules
.idea
31 changes: 31 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Statamic Language (ISO 639) Dropdown Fieldtype

![Statamic 3.0+](https://img.shields.io/badge/Statamic-3.0+-FF269E?style=for-the-badge&link=https://statamic.com)
> The simplest way to list every available langue as a selectable dropdown 🤘
## Features
- Displays a select field with **every ISO 639 language**.
- Set a **placeholder**.
- Allow **multiple selections**.
- Set a **maximum number of selectable items**.
- Enable **searching** through possible options.

## Getting Started

We have made things easy for you start.

1. **Install the addon**
This can be achieve by downloading our latest release and configuring the package as a path repository in your `composer.json` file.


2. **Add the Language ISO 639 select fieldtype.**
Choose your display and hanlde values.
Customize the behavior using our various fieldtypes settings.


3. **Enjoy.**

## What does your addon look like?

![Statamic Language Selector Dropdown](https://parfaitementweb.com/statamic/statamic-language-iso639-fieldtype/fieldtype-preview.png)
![Statamic Language Selector Options](https://parfaitementweb.com/statamic/statamic-language-iso639-fieldtype/fieldtype-options.png)
28 changes: 28 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"name": "parfaitementweb/statamic-language-iso639-fieldtype",
"description": "Language dropdown with all ISO639 options values",
"autoload": {
"psr-4": {
"Parfaitementweb\\StatamicLanguageIso639Fieldtype\\": "src"
}
},
"authors": [
{
"name": "Alexis Serneels"
}
],
"support": {
"email": "[email protected]"
},
"extra": {
"statamic": {
"name": "Language Selector Fieldtype",
"description": "Language Selector Fieldtype"
},
"laravel": {
"providers": [
"Parfaitementweb\\StatamicLanguageIso639Fieldtype\\ServiceProvider"
]
}
}
}
3 changes: 3 additions & 0 deletions mix-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"/public/js/addon.js": "/public/js/addon.js"
}
23 changes: 23 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"name": "parfaitementweb/statamic-language-iso639-fieldtype",
"description": "Statamic fieldtype to select a language (ISO 639) in a dropdown",
"scripts": {
"dev": "npm run development",
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "npm run development -- --watch",
"watch-poll": "npm run watch -- --watch-poll",
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"prod": "npm run production",
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
"devDependencies": {
"autoprefixer": "^9.7.6",
"cross-env": "^5.1",
"laravel-mix": "^4.0",
"postcss-import": "^12.0.1",
"postcss-nested": "^4.2.1",
"postcss-preset-env": "^6.7.0",
"vue-template-compiler": "^2.6.12"
},
"dependencies": {}
}
1 change: 1 addition & 0 deletions public/js/addon.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

52 changes: 52 additions & 0 deletions src/Fieldtypes/LanguageSelector.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<?php

namespace Parfaitementweb\StatamicLanguageIso639Fieldtype\Fieldtypes;

use Statamic\Fields\Fieldtype;
use Statamic\Fieldtypes\Select;
use Statamic\Support\Arr;

class LanguageSelector extends Select
{
protected $icon = 'earth';

protected $categories = ['text'];

public static function title()
{
return 'Language ISO 639 select';
}

protected function configFieldItems(): array
{
return [
'placeholder' => [
'display' => __('Placeholder'),
'instructions' => __('statamic::fieldtypes.select.config.placeholder'),
'type' => 'text',
'default' => '',
'width' => 50,
],
'multiple' => [
'display' => __('Multiple'),
'instructions' => __('statamic::fieldtypes.select.config.multiple'),
'type' => 'toggle',
'default' => false,
'width' => 50,
],
'max_items' => [
'display' => __('Max Items'),
'instructions' => __('statamic::messages.max_items_instructions'),
'type' => 'integer',
'width' => 50,
],
'searchable' => [
'display' => __('Searchable'),
'instructions' => __('statamic::fieldtypes.select.config.searchable'),
'type' => 'toggle',
'default' => true,
'width' => 50,
]
];
}
}
18 changes: 18 additions & 0 deletions src/ServiceProvider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?php

namespace Parfaitementweb\StatamicLanguageIso639Fieldtype;

use Parfaitementweb\StatamicLanguageIso639Fieldtype\FieldTypes\LanguageSelector;
use Statamic\Providers\AddonServiceProvider;
use Statamic\Statamic;

class ServiceProvider extends AddonServiceProvider
{
protected $scripts = [
__DIR__ . '/../public/js/addon.js'
];

protected $fieldtypes = [
LanguageSelector::class,
];
}
5 changes: 5 additions & 0 deletions src/resources/js/addon.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import LanguageSelector from '../js/components/fieldtypes/LanguageSelector';

Statamic.booting(() => {
Statamic.$components.register('language_selector-fieldtype', LanguageSelector);
});
Loading

0 comments on commit a16ff8d

Please sign in to comment.