diff --git a/.gitignore b/.gitignore index 987e2a2..7e43310 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ composer.lock vendor +.idea/ \ No newline at end of file diff --git a/lang/en/australia-states.php b/lang/en/australia-states.php new file mode 100644 index 0000000..1c22ef1 --- /dev/null +++ b/lang/en/australia-states.php @@ -0,0 +1,14 @@ +value => 'Australian Capital Territory', + AustraliaState::NEW_SOUTH_WALES->value => 'New South Wales', + AustraliaState::NORTHERN_TERRITORY->value => 'Northern Territory', + AustraliaState::QUEENSLAND->value => 'Queensland', + AustraliaState::SOUTH_AUSTRALIA->value => 'South Australia', + AustraliaState::TASMANIA->value => 'Tasmania', + AustraliaState::VICTORIA->value => 'Victoria', + AustraliaState::WESTERN_AUSTRALIA->value => 'Western Australia', +]; \ No newline at end of file diff --git a/lang/en/canada-states.php b/lang/en/canada-states.php new file mode 100644 index 0000000..6f51d23 --- /dev/null +++ b/lang/en/canada-states.php @@ -0,0 +1,19 @@ +value => 'Alberta', + CanadaState::BRITISH_COLUMBIA->value => 'British Columbia', + CanadaState::MANITOBA->value => 'Manitoba', + CanadaState::NEW_BRUNSWICK->value => 'New Brunswick', + CanadaState::NEWFOUNDLAND_AND_LABRADOR->value => 'Newfoundland and Labrador', + CanadaState::NOVA_SCOTIA->value => 'Nova Scotia', + CanadaState::NORTHWEST_TERRITORIES->value => 'Northwest Territories', + CanadaState::NUNAVUT->value => 'Nunavut', + CanadaState::ONTARIO->value => 'Ontario', + CanadaState::PRINCE_EDWARD_ISLAND->value => 'Prince Edward Island', + CanadaState::QUEBEC->value => 'Quebec', + CanadaState::SASKATCHEWAN->value => 'Saskatchewan', + CanadaState::YUKON->value => 'Yukon', +]; \ No newline at end of file diff --git a/lang/en/states.php b/lang/en/states.php deleted file mode 100644 index 298b51e..0000000 --- a/lang/en/states.php +++ /dev/null @@ -1,21 +0,0 @@ -value => [ - State::AUSTRALIAN_CAPITAL_TERRITORY->value => 'Australian Capital Territory', - State::NEW_SOUTH_WALES->value => 'New South Wales', - State::NORTHERN_TERRITORY->value => 'Northern Territory', - State::QUEENSLAND->value => 'Queensland', - State::SOUTH_AUSTRALIA->value => 'South Australia', - State::TASMANIA->value => 'Tasmania', - State::VICTORIA->value => 'Victoria', - State::WESTERN_AUSTRALIA->value => 'Western Australia', - ], - - Country::CANADA->value => [ - State::QUEBEC->value => 'Quebec', - ], -]; diff --git a/src/AustraliaState.php b/src/AustraliaState.php new file mode 100644 index 0000000..bebd956 --- /dev/null +++ b/src/AustraliaState.php @@ -0,0 +1,37 @@ +value; + } +} \ No newline at end of file diff --git a/src/CanadaState.php b/src/CanadaState.php new file mode 100644 index 0000000..12040ae --- /dev/null +++ b/src/CanadaState.php @@ -0,0 +1,47 @@ +value; + } +} \ No newline at end of file diff --git a/src/State.php b/src/State.php index d467933..b564e75 100644 --- a/src/State.php +++ b/src/State.php @@ -7,51 +7,17 @@ use AllDressed\Constants\Concerns\CanBeRandomized; use Illuminate\Support\Arr; use Illuminate\Support\Collection; -use Illuminate\Support\Facades\App; -use Illuminate\Support\Facades\Lang; enum State: string { use AvailableAsCollection, AvailableAsOptions, CanBeRandomized; - case AUSTRALIAN_CAPITAL_TERRITORY = 'ACT'; - case NEW_SOUTH_WALES = 'NSW'; - case NORTHERN_TERRITORY = 'NT'; - case QUEBEC = 'QC'; - case QUEENSLAND = 'QLD'; - case SOUTH_AUSTRALIA = 'SA'; - case TASMANIA = 'TAS'; - case VICTORIA = 'VIC'; - case WESTERN_AUSTRALIA = 'WA'; - - /** - * Retrieve the country of the state. - */ - public function getCountry(): Country - { - $key = "alldressed-{$this->value}-country"; - - if (! App::has($key)) { - App::singleton($key, function () { - $country = collect(Lang::get('constants::states'))->search( - function ($states) { - return collect($states)->has($this->value); - } - ); - - return Country::from($country); - }); - } - - return App::get($key); - } - /** - * Preprend the country for the translation key. + * Get all states from all enums. */ - public function getTranslationKey(): string + public static function all(): Collection { - return "states.{$this->getCountry()->value}.{$this->value}"; + return collect([...AustraliaState::cases(), ...CanadaState::cases()]); } /** @@ -60,12 +26,10 @@ public function getTranslationKey(): string public static function toCountrySelectorOptions(): Collection { return static::all() - ->map(static fn ($state) => [ - 'country' => $state->getCountry()->value, + ->groupBy(static fn ($states) => $states->getCountry()) + ->map(static fn ($states) => $states->map(static fn ($state) => [ 'label' => $state->getLabel(), 'value' => $state->value, - ]) - ->groupBy('country') - ->map(static fn ($option) => Arr::except($option, 'country')); + ])); } -} +} \ No newline at end of file