From 48ea0538ea818145a580357fa63a48053ba9306b Mon Sep 17 00:00:00 2001 From: Mike van den Hoek Date: Wed, 19 Aug 2026 13:47:17 +0200 Subject: [PATCH 01/22] feat: usage of Zaak extension and suspension --- src/Blocks/Zaak.php | 12 ++ src/Macros/ZgwApiMacros.php | 141 ++++++++++++++++-- .../owc-single-zaak-details.blade.php | 2 + 3 files changed, 141 insertions(+), 14 deletions(-) diff --git a/src/Blocks/Zaak.php b/src/Blocks/Zaak.php index 3558bb1..79c92a4 100644 --- a/src/Blocks/Zaak.php +++ b/src/Blocks/Zaak.php @@ -61,6 +61,18 @@ protected function render_block( array $attributes, string $block_content, WP_Bl $zaak->setValue( 'supplier', $supplier ); } + /** + * TEST. + */ + $zaak->setValue( + 'verlenging', + array( + 'reden' => 'test', + 'duur' => 'P42D', + ) + ); + $zaak->setValue( 'opschorting', array( 'reden' => 'test' ) ); + return owc_mijn_services_render_view( 'owc-single-zaak', array( diff --git a/src/Macros/ZgwApiMacros.php b/src/Macros/ZgwApiMacros.php index de04145..33803b0 100644 --- a/src/Macros/ZgwApiMacros.php +++ b/src/Macros/ZgwApiMacros.php @@ -21,6 +21,7 @@ use Exception; use DateTimeImmutable; +use DateInterval; use OWC\My_Services\Services\LoggerService; use OWC\ZGW\Entities\Enkelvoudiginformatieobject; use OWC\ZGW\Entities\Statustype; @@ -41,7 +42,7 @@ public static function register(): void { Zaak::macro( 'permalink', - function () { + function (): string { $identification = $this->getValue( 'identificatie', '' ); if ('' === $identification) { @@ -60,7 +61,7 @@ function () { Zaak::macro( 'startDate', - function ( string $format = 'j F Y' ) { + function ( string $format = 'j F Y' ): string { $startDate = $this->getValue( 'startdatum', null ); if ( ! $startDate instanceof DateTimeImmutable) { @@ -73,7 +74,7 @@ function ( string $format = 'j F Y' ) { Zaak::macro( 'registerDate', - function ( string $format = 'j F Y' ) { + function ( string $format = 'j F Y' ): string { $register_date = $this->getValue( 'registratiedatum', null ); if ( ! $register_date instanceof DateTimeImmutable) { @@ -99,7 +100,7 @@ function ( string $format = 'j F Y' ): ?string { Zaak::macro( 'endDatePlanned', - function ( string $format = 'j F Y' ) { + function ( string $format = 'j F Y' ): string { $end_date_planned = $this->getValue( 'einddatumGepland', null ); if ( ! $end_date_planned instanceof DateTimeImmutable) { @@ -112,9 +113,9 @@ function ( string $format = 'j F Y' ) { Enkelvoudiginformatieobject::macro( 'downloadUrl', - function ( string $zaak_identification, string $supplier ) { + function ( string $zaak_identification, string $supplier ): string { if ($this->isClassified() || ! $this->hasFinalStatus()) { - // return ''; // Is disabled for testing purposes. + return ''; } $identification = $this->identification(); @@ -128,7 +129,7 @@ function ( string $zaak_identification, string $supplier ) { Enkelvoudiginformatieobject::macro( 'identification', - function () { + function (): string { $url = $this->getValue( 'url', '' ); if ( ! is_string( $url ) || '' === $url) { @@ -143,7 +144,7 @@ function () { Enkelvoudiginformatieobject::macro( 'sizeFormatted', - function () { + function (): string { $size = $this->getValue( 'bestandsomvang', 0 ); return $size ? ( size_format( $size ) ?: '' ) : ''; @@ -152,7 +153,7 @@ function () { Enkelvoudiginformatieobject::macro( 'formatType', - function () { + function (): string { $mime_type = $this->getValue( 'formaat', '' ); if ( ! is_string( $mime_type ) || 1 > strlen( $mime_type )) { @@ -167,7 +168,7 @@ function () { Enkelvoudiginformatieobject::macro( 'creationDate', - function () { + function (): string { $date = $this->getValue( 'creatiedatum', null ); if ( ! $date instanceof DateTimeImmutable) { @@ -184,7 +185,7 @@ function () { Enkelvoudiginformatieobject::macro( 'formattedMetaData', - function () { + function (): string { $meta = array_filter( array( $this->formatType(), @@ -203,7 +204,7 @@ function () { Statustype::macro( 'volgnummer', - function () { + function (): string { $volgnummer = (string) $this->getValue( 'volgnummer', '' ); return ltrim( $volgnummer, '0' ); @@ -212,9 +213,9 @@ function () { Zaak::macro( 'result', - function () { + function (): string { try { - return $this->getValue( 'resultaat' )?->resultaattype?->getValue( 'toelichting' ); + return $this->getValue( 'resultaat' )?->resultaattype?->getValue( 'toelichting', '' ) ?? ''; } catch (Exception $e) { LoggerService::log_exception( $e, array( 'context' => "Unable to get 'Zaak resultaat'" ) ); @@ -222,5 +223,117 @@ function () { } } ); + + /** + * @since NEXT + */ + Zaak::macro( + 'extensionReason', + function (): string { + try { + return $this->getValue( 'verlenging' )['reden'] ?? ''; + } catch (Exception $e) { + LoggerService::log_exception( $e, array( 'context' => "Unable to get 'Zaak verlenging reden'" ) ); + + return ''; + } + } + ); + + /** + * @since NEXT + */ + Zaak::macro( + 'extensionDuration', + function (): string { + try { + return $this->getValue( 'verlenging' )['duur'] ?? ''; + } catch (Exception $e) { + LoggerService::log_exception( $e, array( 'context' => "Unable to get 'Zaak verlenging duur'" ) ); + + return ''; + } + } + ); + + /** + * @since NEXT + */ + Zaak::macro( + 'extensionDurationFormatted', + function (): string { + try { + $period = $this->extensionDuration(); + + if ('' === $period) { + return ''; + } + + $interval = new DateInterval( $period ); + + $units = array( + 'y' => array( 'jaar', 'jaren' ), + 'm' => array( 'maand', 'maanden' ), + 'd' => array( 'dag', 'dagen' ), + 'h' => array( 'uur', 'uren' ), + 'i' => array( 'minuut', 'minuten' ), + ); + + $parts = array(); + + foreach ( $units as $property => list( $singular, $plural ) ) { + $value = $interval->{$property}; + + if ( $value > 0 ) { + $parts[] = sprintf( + '%d %s', + $value, + 1 === $value ? $singular : $plural + ); + } + } + + return implode( ', ', $parts ); + } catch (Exception $e) { + LoggerService::log_exception( $e, array( 'context' => "Unable to get 'Zaak verlenging duur'" ) ); + + return ''; + } + } + ); + + /** + * @since NEXT + */ + Zaak::macro( + 'extensionFormatted', + function (): string { + $reason = $this->extensionReason(); + + if ('' === $reason) { + return ''; + } + + $duration = $this->extensionDurationFormatted(); + + return '' === $duration ? $reason : sprintf( '%s (%s)', $reason, $duration ); + } + ); + + /** + * @since NEXT + */ + Zaak::macro( + 'suspensionReason', + function (): string { + try { + return $this->getValue( 'opschorting' )['reden'] ?? ''; + } catch (Exception $e) { + LoggerService::log_exception( $e, array( 'context' => "Unable to get 'Zaak opschorting reden'" ) ); + + return ''; + } + } + ); } } diff --git a/src/Views/partials/owc-single-zaak-details.blade.php b/src/Views/partials/owc-single-zaak-details.blade.php index cade9fc..b963234 100644 --- a/src/Views/partials/owc-single-zaak-details.blade.php +++ b/src/Views/partials/owc-single-zaak-details.blade.php @@ -11,6 +11,8 @@ $fields = [ 'Datum aanvraag' => $zaak->registerDate('j F Y'), 'Startdatum' => $zaak->startDate('j F Y'), + 'Verlenging' => $zaak->extensionFormatted(), + 'Opschorting' => $zaak->suspensionReason(), 'Einddatum gepland' => $zaak->endDatePlanned() && empty($zaak->endDate()) ? $zaak->endDatePlanned() : null, 'Einddatum' => $zaak->endDate(), 'Zaaknummer' => $zaak->getValue('identificatie', ''), From 7c285f56eb1e51cb1fa3454bdc75941887414653 Mon Sep 17 00:00:00 2001 From: Mike van den Hoek Date: Thu, 27 Aug 2026 11:42:36 +0200 Subject: [PATCH 02/22] refactor: show status as checked when date is present --- src/Views/partials/owc-single-zaak-status.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Views/partials/owc-single-zaak-status.blade.php b/src/Views/partials/owc-single-zaak-status.blade.php index 8b2c6e1..b08419c 100644 --- a/src/Views/partials/owc-single-zaak-status.blade.php +++ b/src/Views/partials/owc-single-zaak-status.blade.php @@ -40,9 +40,9 @@ } // Determine step status - if ($step->isPast()) { + if ($step->isPast() && $statusUpdate) { $status = 'checked'; - } elseif ($step->isCurrent()) { + } elseif ($step->isCurrent() && $statusUpdate) { $status = 'checked'; } elseif ($step->isNext()) { $status = 'current'; From 679ae7830627f6930f83989ea88145f626dd6d2d Mon Sep 17 00:00:00 2001 From: Mike van den Hoek Date: Thu, 27 Aug 2026 13:40:46 +0200 Subject: [PATCH 03/22] feat: filter zaken on role initiator --- src/Blocks/MijnZaken.php | 3 + src/Blocks/Zaak.php | 11 +++- .../InformatieObjectDownloadService.php | 11 +++- src/Traits/AuthenticationFilter.php | 66 +++++++++++++++++++ 4 files changed, 88 insertions(+), 3 deletions(-) diff --git a/src/Blocks/MijnZaken.php b/src/Blocks/MijnZaken.php index d70170f..ba328d9 100644 --- a/src/Blocks/MijnZaken.php +++ b/src/Blocks/MijnZaken.php @@ -29,6 +29,9 @@ protected function render_block( array $attributes, string $block_content, WP_Bl $this->handle_filter_ordering( $attributes ); + // Make sure initiators are only allowed to see their own cases, and not those of other initiators. + $this->zaken_filter->add( 'rol__omschrijvingGeneriek', 'initiator' ); + try { if ( 0 < count( $this->clients )) { $zaken = $this->get_zaken_from_clients(); diff --git a/src/Blocks/Zaak.php b/src/Blocks/Zaak.php index 79c92a4..3d7dedf 100644 --- a/src/Blocks/Zaak.php +++ b/src/Blocks/Zaak.php @@ -108,10 +108,17 @@ protected function retrieve_zaak( string $identification ): ?ZaakEntity } if (0 === count( $this->clients )) { - $zaak = $this->client->zaken()->filter( $this->zaken_filter )->first() ?: null; + $zaak = $this->client->zaken()->expandOnly( self::EXPAND_WITH_ROLLEN )->filter( $this->zaken_filter )->first() ?: null; } else { $zaak = $this->retrieve_zaak_by_multiple_clients( $identification ); } + + // The betrokkene filters above independently match against the zaak's rollen, so they + // don't guarantee it's the same role that is both the betrokkene and the initiator. + // Verify that in code instead, now that the rollen are available on the zaak. + if ($zaak instanceof ZaakEntity && ! $this->zaak_has_authenticated_initiator( $zaak, $this->bsn, $this->kvk, $this->vestigings_nummer, $this->rsin )) { + $zaak = null; + } } catch (Exception $e) { LoggerService::log_exception( $e, array( 'context' => "Error retrieving zaak with identification '{$identification}'." ) ); @@ -130,7 +137,7 @@ protected function retrieve_zaak_by_multiple_clients( string $identification ): foreach ($this->clients as $supplier_name => $client) { try { - $zaak = $client->zaken()->filter( clone $this->zaken_filter )->first() ?: null; + $zaak = $client->zaken()->expandOnly( self::EXPAND_WITH_ROLLEN )->filter( clone $this->zaken_filter )->first() ?: null; if (null !== $zaak) { $zaak->setValue( 'supplier', $supplier_name ); diff --git a/src/Services/InformatieObjectDownloadService.php b/src/Services/InformatieObjectDownloadService.php index fe1d0d6..af69bf6 100644 --- a/src/Services/InformatieObjectDownloadService.php +++ b/src/Services/InformatieObjectDownloadService.php @@ -155,7 +155,16 @@ protected function validate_zaak( string $identification ): ?Zaak throw new Exception( 'No valid authentication filter applied to zaken filter.' ); } - return $this->client->zaken()->filter( $filter )->first() ?: null; + $zaak = $this->client->zaken()->expandOnly( self::EXPAND_WITH_ROLLEN )->filter( $filter )->first() ?: null; + + // The betrokkene filters above independently match against the zaak's rollen, so they + // don't guarantee it's the same role that is both the betrokkene and the initiator. + // Verify that in code instead, now that the rollen are available on the zaak. + if ($zaak instanceof Zaak && ! $this->zaak_has_authenticated_initiator( $zaak, $this->bsn, $this->kvk, $this->vestigings_nummer, $this->rsin )) { + return null; + } + + return $zaak; } catch (Exception $e) { LoggerService::log_exception( $e, array( 'context' => "Error validating zaak with identification '{$identification}' for informatieobject download." ) ); diff --git a/src/Traits/AuthenticationFilter.php b/src/Traits/AuthenticationFilter.php index 7acabc0..ebf1726 100644 --- a/src/Traits/AuthenticationFilter.php +++ b/src/Traits/AuthenticationFilter.php @@ -21,6 +21,9 @@ use OWC\My_Services\ContainerResolver; use OWC\ZGW\Endpoints\Filter\ZakenFilter; +use OWC\ZGW\Entities\Attributes\SubjectType; +use OWC\ZGW\Entities\Rol; +use OWC\ZGW\Entities\Zaak; /** * Authentication filter trait. @@ -29,6 +32,15 @@ */ trait AuthenticationFilter { + /** + * The expand resources needed to verify, without extra API calls, that a single + * zaak actually belongs to the authenticated user. Include on top of the resources + * already expanded by default (currently 'zaaktype' and 'status'). + * + * @since 0.15.0 + */ + protected const EXPAND_WITH_ROLLEN = array( 'zaaktype', 'status', 'rollen' ); + /** * Applies exactly one KVK-based identification filter, preferring vestigingsNummer, then * RSIN, then the plain kvkNummer, so only one is ever active. @@ -60,4 +72,58 @@ protected function add_kvk_filter( ZakenFilter $filter, string $rsin, string $ve return false; } + + /** + * Verifies that the given zaak has a role with 'omschrijvingGeneriek' 'initiator' whose + * betrokkene identification matches the authenticated user. + * + * The query filters used to retrieve a single zaak (byBsn/add_kvk_filter combined with + * a 'rol__omschrijvingGeneriek' filter) each match against the zaak's rollen independently, + * so they don't guarantee both conditions are satisfied by the same role. This performs + * that check in code instead, using the same identification precedence as add_kvk_filter, + * against roles already available on the zaak (see EXPAND_WITH_ROLLEN). + * + * @since NEXT + */ + protected function zaak_has_authenticated_initiator( Zaak $zaak, string $bsn, string $kvk, string $vestigings_nummer, string $rsin ): bool + { + if ('' !== $bsn && $zaak->isInitiatedBy( $bsn )) { + return true; + } + + if ( (bool) ContainerResolver::make()->get( 'display.disable-kvk-filtering' )) { + return false; + } + + $extended_filtering_enabled = (bool) ContainerResolver::make()->get( 'display.enable-extended-kvk-filtering' ); + + if ($extended_filtering_enabled && '' !== $vestigings_nummer) { + return $this->zaak_has_initiator_role( $zaak, SubjectType::VESTIGING, 'vestigingsNummer', $vestigings_nummer ); + } + + if ($extended_filtering_enabled && '' !== $rsin) { + return $this->zaak_has_initiator_role( $zaak, SubjectType::NIET_NATUURLIJK_PERSOON, 'innNnpId', $rsin ); + } + + if ('' !== $kvk) { + return $this->zaak_has_initiator_role( $zaak, SubjectType::VESTIGING, 'kvkNummer', $kvk ); + } + + return false; + } + + /** + * @since 0.15.0 + */ + private function zaak_has_initiator_role( Zaak $zaak, SubjectType $betrokkene_type, string $identificatie_key, string $identificatie_value ): bool + { + return $zaak->rollen->filter( + function ( Rol $rol ) use ( $betrokkene_type, $identificatie_key, $identificatie_value ) { + // ZGW entity property names below follow the ZGW API spec, not our naming convention. + return $rol->isInitiator() + && $rol->betrokkeneType?->is( $betrokkene_type ) // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase + && ( ( (array) $rol->betrokkeneIdentificatie )[ $identificatie_key ] ?? null ) === $identificatie_value; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase + } + )->isNotEmpty(); + } } From 7c02662864aa485c7bb00987755340f317d5da6f Mon Sep 17 00:00:00 2001 From: Mike van den Hoek Date: Tue, 1 Sep 2026 12:26:49 +0200 Subject: [PATCH 04/22] refactor: enabled settings by filtered capability --- .../InformatieobjecttypenCacheController.php | 3 +- src/Settings/OptionsPageRegistrar.php | 62 ++++++++++++++----- 2 files changed, 48 insertions(+), 17 deletions(-) diff --git a/src/Controllers/InformatieobjecttypenCacheController.php b/src/Controllers/InformatieobjecttypenCacheController.php index 6954e8b..8cf6c18 100644 --- a/src/Controllers/InformatieobjecttypenCacheController.php +++ b/src/Controllers/InformatieobjecttypenCacheController.php @@ -20,6 +20,7 @@ } use OWC\My_Services\Settings\Adapters\InformatieobjecttypeAdapter; +use OWC\My_Services\Settings\OptionsPageRegistrar; use OWC\My_Services\Traits\Supplier; /** @@ -57,7 +58,7 @@ public function render_clear_cache_button(): void */ public function handle_clear_cache_request(): void { - $capability = apply_filters( 'owcms::settings/allowed_informatieobjecttypen_capability', 'manage_options' ); + $capability = OptionsPageRegistrar::get_allowed_settings_capability(); if ( ! current_user_can( 'manage_options' ) && ! current_user_can( $capability )) { wp_die( esc_html__( 'Je hebt geen toestemming om deze actie uit te voeren.', 'owc-mijn-services' ) ); diff --git a/src/Settings/OptionsPageRegistrar.php b/src/Settings/OptionsPageRegistrar.php index 1b9dd9e..4b57256 100644 --- a/src/Settings/OptionsPageRegistrar.php +++ b/src/Settings/OptionsPageRegistrar.php @@ -48,16 +48,7 @@ public function addSettingsFields(): void return; } - /** - * Filters the capability required to manage the 'Toegestane informatieobjecttypen' setting. - * - * Defaults to 'manage_options', in which case only administrators can see or edit the - * setting. Filtering this to a different capability additionally exposes the settings - * page (and only this one field on it) to any user with that capability. - * - * @since 0.11.0 - */ - $allowed_informatieobjecttypen_capability = apply_filters( 'owcms::settings/allowed_informatieobjecttypen_capability', 'manage_options' ); + $allowed_settings_capability = self::get_allowed_settings_capability(); $options = new_cmb2_box( array( @@ -67,7 +58,7 @@ public function addSettingsFields(): void 'option_key' => 'owc_mijn_services_settings', 'parent_slug' => 'options-general.php', - 'capability' => $allowed_informatieobjecttypen_capability, + 'capability' => $allowed_settings_capability, ) ); @@ -75,6 +66,10 @@ public function addSettingsFields(): void return current_user_can( 'manage_options' ); }; + $allowed_settings_show_on_cb = function () use ( $allowed_settings_capability ) { + return current_user_can( 'manage_options' ) || current_user_can( $allowed_settings_capability ); + }; + $options->add_field( array( 'name' => __( 'Logboekinstellingen', 'owc-mijn-services' ), @@ -121,9 +116,7 @@ public function addSettingsFields(): void 'text' => array( 'add_row_text' => __( 'Informatieobjecttype toevoegen', 'owc-mijn-services' ), ), - 'show_on_cb' => function () use ( $allowed_informatieobjecttypen_capability ) { - return current_user_can( 'manage_options' ) || current_user_can( $allowed_informatieobjecttypen_capability ); - }, + 'show_on_cb' => $allowed_settings_show_on_cb, ) ); @@ -175,7 +168,7 @@ public function addSettingsFields(): void 'sanitization_cb' => function ( $value ) { return $this->handle_unchecked_checkbox( $value ); }, - 'show_on_cb' => $admin_only_show_on_cb, + 'show_on_cb' => $allowed_settings_show_on_cb, ) ); @@ -188,7 +181,7 @@ public function addSettingsFields(): void 'sanitization_cb' => function ( $value ) { return $this->handle_unchecked_checkbox( $value ); }, - 'show_on_cb' => $admin_only_show_on_cb, + 'show_on_cb' => $allowed_settings_show_on_cb, ) ); } @@ -239,4 +232,41 @@ private function handle_unchecked_checkbox( mixed $value ): ?string return $value; } + + /** + * Resolves the capability required to manage the non-administrator-only settings. + * + * @since 0.15.0 + */ + public static function get_allowed_settings_capability(): string + { + /** + * Filters the capability required to manage the non-administrator-only settings. + * + * Defaults to 'manage_options', in which case only administrators can see or edit these + * settings. Filtering this to a different capability additionally exposes the settings + * page (and only these fields on it) to any user with that capability. + * + * @since 0.15.0 + */ + $capability = apply_filters( 'owcms::settings/allowed_settings_capability', 'manage_options' ); + + if ( has_filter( 'owcms::settings/allowed_informatieobjecttypen_capability' ) ) { + /** + * Deprecated: use the `owcms::settings/allowed_settings_capability` filter instead, + * which now also governs the 'Statusstappen zonder datum verbergen' and + * 'Volgnummers verbergen' settings. + * + * @deprecated 0.15.0 Use `owcms::settings/allowed_settings_capability` instead. + */ + $capability = apply_filters_deprecated( + 'owcms::settings/allowed_informatieobjecttypen_capability', + array( $capability ), + '0.15.0', + 'owcms::settings/allowed_settings_capability' + ); + } + + return $capability; + } } From 056e3ea7d97399b1be181faa28ae36d1eab1f314 Mon Sep 17 00:00:00 2001 From: Mike van den Hoek Date: Tue, 1 Sep 2026 12:29:59 +0200 Subject: [PATCH 05/22] release: v0.15.0 --- CHANGELOG.md | 5 +++++ owc-mijn-services.php | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67421cd..41593a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## [v0.15.0] - 2026-09-01 + +- Change: enabled settings by filtered capability +- Change: return type of Zaak macro endDate + ## [v0.14.0] - 2026-08-19 - Chore: update owc/zgw-api package diff --git a/owc-mijn-services.php b/owc-mijn-services.php index 900919a..70254da 100644 --- a/owc-mijn-services.php +++ b/owc-mijn-services.php @@ -12,7 +12,7 @@ * Plugin Name: OWC | Mijn Services * Plugin URI: https://github.com/OpenWebconcept/plugin-owc-mijn-services * Description: Toon mijn zaken - * Version: 0.14.0 + * Version: 0.15.0 * Author: Yard | Digital Agency * Author URI: https://www.yard.nl * License: EUPL @@ -31,7 +31,7 @@ exit; } -const VERSION = '0.14.0'; +const VERSION = '0.15.0'; define( 'OWC_MY_SERVICES_FILE', __FILE__ ); define( 'OWC_MY_SERVICES_DIR_PATH', plugin_dir_path( OWC_MY_SERVICES_FILE ) ); define( 'OWC_MY_SERVICES_PLUGIN_URL', plugins_url( '/', OWC_MY_SERVICES_FILE ) ); From ab0ac7fcbb05c12b86bfcbfbff8fdd924186f668 Mon Sep 17 00:00:00 2001 From: YvetteNikolov Date: Mon, 7 Sep 2026 14:36:34 +0200 Subject: [PATCH 06/22] feat(mijn-zaken): tabs toggle, editor panel rework, empty-tab message --- build/mijn-zaken/block.json | 4 + build/mijn-zaken/index.asset.php | 2 +- build/mijn-zaken/index.js | 2 +- build/mijn-zaken/view.asset.php | 2 +- build/mijn-zaken/view.js | 2 +- languages/owc-mijn-services.pot | 316 ++++++++++++++++------ resources/blocks/mijn-zaken/block.json | 1 + resources/blocks/mijn-zaken/edit.js | 360 +++++++++++++++---------- resources/blocks/mijn-zaken/view.js | 48 +++- src/Blocks/MijnZaken.php | 2 + src/Providers/BlockServiceProvider.php | 4 + src/Views/owc-error.blade.php | 6 +- src/Views/owc-overview-zaken.blade.php | 23 +- 13 files changed, 525 insertions(+), 247 deletions(-) diff --git a/build/mijn-zaken/block.json b/build/mijn-zaken/block.json index acd5b93..3ae35e1 100644 --- a/build/mijn-zaken/block.json +++ b/build/mijn-zaken/block.json @@ -22,6 +22,10 @@ "type": "boolean", "default": false }, + "showTabs": { + "type": "boolean", + "default": true + }, "perPage": { "type": "number", "default": 10 diff --git a/build/mijn-zaken/index.asset.php b/build/mijn-zaken/index.asset.php index 25331a9..af1c793 100644 --- a/build/mijn-zaken/index.asset.php +++ b/build/mijn-zaken/index.asset.php @@ -1 +1 @@ - array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-element', 'wp-i18n', 'wp-server-side-render'), 'version' => '6de45742170e11633a46'); + array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-element', 'wp-i18n'), 'version' => '8c486808bb89d10fc60f'); diff --git a/build/mijn-zaken/index.js b/build/mijn-zaken/index.js index fc79701..fb683ee 100644 --- a/build/mijn-zaken/index.js +++ b/build/mijn-zaken/index.js @@ -1 +1 @@ -(()=>{"use strict";var e,i={219:(e,i,t)=>{const n=window.wp.blocks,a=window.wp.element,l=window.wp.blockEditor,r=window.wp.components,o=window.wp.serverSideRender;var s=t.n(o);const c=window.wp.i18n,d=JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":2,"name":"owc-my-services/mijn-zaken","version":"1.0.0","title":"OWC Mijn Zaken","description":"Toont Mijn Zaken blok.","attributes":{"zaakClient":{"type":"string","default":""},"zaakClients":{"type":"array","default":[]},"byBSN":{"type":"boolean","default":true},"byKVK":{"type":"boolean","default":false},"perPage":{"type":"number","default":10},"orderBy":{"type":"string","default":"startdatum"},"orderByDirection":{"type":"string","default":"-"}},"supports":{"html":false},"textdomain":"owc-my-services","editorScript":"file:./index.js","editorStyle":"file:./editor.css","style":"file:./style-index.css","viewScript":"file:./view.js"}'),u=window.ReactJSXRuntime;(0,n.registerBlockType)(d,{edit:function({attributes:e,setAttributes:i}){const{zaakClient:t,zaakClients:n,byBSN:o,byKVK:p,perPage:v,orderBy:b,orderByDirection:m}=e,w=(window?.owcMyServices?.zaakClientOptions??[]).filter((e=>""!==e.value)),h=(window?.owcMyServices?.productionChecksEnabled??!0)&&!o&&!(p&&!g),g=window?.owcMyServices?.disableKVKFiltering??!1;return(0,a.useEffect)((()=>{t&&0===n.length&&i({zaakClients:[t],zaakClient:""})}),[]),(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(l.InspectorControls,{children:(0,u.jsxs)(r.PanelBody,{title:(0,c.__)("Instellingen","owc-mijn-services"),initialOpen:!0,children:[w.length>0?(0,u.jsx)(r.BaseControl,{id:"owc-my-services-zaak-clients-checkbox-selection",label:(0,c.__)("Zaaksystemen","owc-mijn-services"),help:(0,c.__)("Selecteer de zaaksystemen waaruit de zaken opgehaald moeten worden.","owc-mijn-services"),children:w.map((e=>(0,u.jsx)(r.CheckboxControl,{label:e.label,checked:n.includes(e.value),onChange:t=>{const a=t?[...n,e.value]:n.filter((i=>i!==e.value));i({zaakClients:a})}},e.value)))}):(0,u.jsx)("p",{children:(0,c.__)("Geen leveranciers geconfigureerd.","owc-mijn-services")}),h&&(0,u.jsx)(r.Notice,{status:"warning",isDismissible:!1,children:g?(0,c.__)("Schakel de filteroptie Filter op BSN in.","owc-mijn-services"):(0,c.__)("Selecteer minimaal één filteroptie: Filter op BSN of Filter op KVK.","owc-mijn-services")}),(0,u.jsx)(r.CheckboxControl,{label:"Filter op BSN",help:"Filter zaken die aangemaakt zijn door de ingelogde gebruiker op basis van het BSN nummer.",checked:o,onChange:e=>i({byBSN:e})}),!g&&(0,u.jsx)(r.CheckboxControl,{label:"Filter op KVK",help:"Filter zaken die aangemaakt zijn door de ingelogde gebruiker op basis van het KVK nummer.",checked:p,onChange:e=>i({byKVK:e})}),g&&(0,u.jsx)(r.Notice,{status:"warning",isDismissible:!1,children:(0,c.__)("Filteren op KVK is uitgeschakeld in de instellingen van de plugin.","owc-mijn-services")}),(0,u.jsx)(r.RangeControl,{label:(0,c.__)("Aantal zaken","owc-mijn-services"),value:v,min:1,max:25,onChange:e=>i({perPage:e})}),(0,u.jsx)(r.SelectControl,{label:"Sorteer op",value:b,options:[{label:"Selecteer een optie",value:""},{label:"Startdatum",value:"startdatum"},{label:"Einddatum",value:"einddatum"},{label:"Publicatiedatum",value:"publicatiedatum"},{label:"Archiefactiedatum",value:"archiefactiedatum"},{label:"Registratiedatum",value:"registratiedatum"},{label:"Identificatie",value:"identificatie"}],onChange:e=>i({orderBy:e})}),b&&""!==b&&(0,u.jsx)(r.SelectControl,{label:"Sorteer volgorde",value:m,options:[{label:"Oplopend",value:"+"},{label:"Aflopend",value:"-"}],onChange:e=>i({orderByDirection:e})})]})}),(0,u.jsx)("div",{...(0,l.useBlockProps)(),children:(0,u.jsx)(r.Disabled,{children:(0,u.jsx)(s(),{block:d.name,attributes:e})})})]})},save:function(){return null}})}},t={};function n(e){var a=t[e];if(void 0!==a)return a.exports;var l=t[e]={exports:{}};return i[e](l,l.exports,n),l.exports}n.m=i,e=[],n.O=(i,t,a,l)=>{if(!t){var r=1/0;for(d=0;d=l)&&Object.keys(n.O).every((e=>n.O[e](t[s])))?t.splice(s--,1):(o=!1,l0&&e[d-1][2]>l;d--)e[d]=e[d-1];e[d]=[t,a,l]},n.n=e=>{var i=e&&e.__esModule?()=>e.default:()=>e;return n.d(i,{a:i}),i},n.d=(e,i)=>{for(var t in i)n.o(i,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:i[t]})},n.o=(e,i)=>Object.prototype.hasOwnProperty.call(e,i),(()=>{var e={500:0,860:0};n.O.j=i=>0===e[i];var i=(i,t)=>{var a,l,[r,o,s]=t,c=0;if(r.some((i=>0!==e[i]))){for(a in o)n.o(o,a)&&(n.m[a]=o[a]);if(s)var d=s(n)}for(i&&i(t);cn(219)));a=n.O(a)})(); \ No newline at end of file +(()=>{"use strict";var e,i={507:()=>{const e=window.wp.blocks,i=window.wp.element,n=window.wp.blockEditor,s=window.wp.components,a=window.wp.i18n,t=window.ReactJSXRuntime,r=[{label:(0,a.__)("Standaard volgorde","owc-mijn-services"),value:""},{label:(0,a.__)("Startdatum","owc-mijn-services"),value:"startdatum"},{label:(0,a.__)("Einddatum","owc-mijn-services"),value:"einddatum"},{label:(0,a.__)("Publicatiedatum","owc-mijn-services"),value:"publicatiedatum"},{label:(0,a.__)("Archiefactiedatum","owc-mijn-services"),value:"archiefactiedatum"},{label:(0,a.__)("Registratiedatum","owc-mijn-services"),value:"registratiedatum"},{label:(0,a.__)("Zaaknummer","owc-mijn-services"),value:"identificatie"}],l=JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":2,"name":"owc-my-services/mijn-zaken","version":"1.0.0","title":"OWC Mijn Zaken","description":"Toont Mijn Zaken blok.","attributes":{"zaakClient":{"type":"string","default":""},"zaakClients":{"type":"array","default":[]},"byBSN":{"type":"boolean","default":true},"byKVK":{"type":"boolean","default":false},"showTabs":{"type":"boolean","default":true},"perPage":{"type":"number","default":10},"orderBy":{"type":"string","default":"startdatum"},"orderByDirection":{"type":"string","default":"-"}},"supports":{"html":false},"textdomain":"owc-my-services","editorScript":"file:./index.js","editorStyle":"file:./editor.css","style":"file:./style-index.css","viewScript":"file:./view.js"}');(0,e.registerBlockType)(l,{edit:({attributes:e,setAttributes:l})=>{const{zaakClient:o,zaakClients:c,byBSN:d,byKVK:u,showTabs:v,perPage:m,orderBy:w,orderByDirection:g}=e,j=(window?.owcMyServices?.zaakClientOptions??[]).filter((e=>""!==e.value)),p=window?.owcMyServices?.productionChecksEnabled??!0,_=window?.owcMyServices?.disableKVKFiltering??!1,k=p&&!d&&!(u&&!_);return(0,i.useEffect)((()=>{o&&0===c.length&&l({zaakClients:[o],zaakClient:""})}),[]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.InspectorControls,{children:[(0,t.jsx)(s.PanelBody,{title:(0,a.__)("Zaaksystemen","owc-mijn-services"),initialOpen:!0,children:(0,t.jsx)(s.__experimentalVStack,{children:0===j.length?(0,t.jsx)(s.Notice,{status:"warning",isDismissible:!1,children:(0,a.__)("Er zijn nog geen zaaksystemen geconfigureerd in de ZGW API-instellingen.","owc-mijn-services")}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{children:(0,a.__)("Uit welke zaaksystemen worden zaken opgehaald?","owc-mijn-services")}),(0,t.jsx)(s.__experimentalVStack,{spacing:2,children:j.map((e=>(0,t.jsx)(s.CheckboxControl,{label:e.label,checked:c.includes(e.value),onChange:i=>((e,i)=>l({zaakClients:i?[...c,e]:c.filter((i=>i!==e))}))(e.value,i)},e.value)))}),0===c.length&&(0,t.jsx)(s.Notice,{status:"warning",isDismissible:!1,children:(0,a.__)("Selecteer minimaal één zaaksysteem. Zonder selectie worden er geen zaken getoond.","owc-mijn-services")})]})})}),(0,t.jsx)(s.PanelBody,{title:(0,a.__)("Zichtbare zaken","owc-mijn-services"),initialOpen:!0,children:(0,t.jsxs)(s.__experimentalVStack,{children:[(0,t.jsx)(s.ToggleControl,{label:(0,a.__)("Persoonlijke zaken (DigiD)","owc-mijn-services"),help:(0,a.__)("Zaken gekoppeld aan het BSN van de ingelogde gebruiker.","owc-mijn-services"),checked:d,onChange:e=>l({byBSN:e})}),k&&(0,t.jsx)(s.Notice,{status:"warning",isDismissible:!1,children:_?(0,a.__)('Zet "Persoonlijke zaken" aan, anders worden er geen zaken getoond.',"owc-mijn-services"):(0,a.__)("Zet minimaal één van beide opties aan, anders worden er geen zaken getoond.","owc-mijn-services")}),_?(0,t.jsx)(s.Notice,{status:"info",isDismissible:!1,children:(0,a.__)("Zakelijke zaken (eHerkenning) zijn uitgeschakeld in de plugin-instellingen.","owc-mijn-services")}):(0,t.jsx)(s.ToggleControl,{label:(0,a.__)("Zakelijke zaken (eHerkenning)","owc-mijn-services"),help:(0,a.__)("Zaken gekoppeld aan het KVK-nummer van de ingelogde gebruiker.","owc-mijn-services"),checked:u,onChange:e=>l({byKVK:e})})]})}),(0,t.jsx)(s.PanelBody,{title:(0,a.__)("Weergave","owc-mijn-services"),initialOpen:!0,children:(0,t.jsxs)(s.__experimentalVStack,{children:[(0,t.jsx)(s.ToggleControl,{label:(0,a.__)("Tabbladen tonen","owc-mijn-services"),checked:v,onChange:e=>l({showTabs:e})}),(0,t.jsx)(s.RangeControl,{label:(0,a.__)("Aantal zaken","owc-mijn-services"),value:m,min:1,max:25,onChange:e=>l({perPage:e})}),(0,t.jsx)(s.SelectControl,{label:(0,a.__)("Sorteren op","owc-mijn-services"),value:w,options:r,onChange:e=>l({orderBy:e})}),w&&(0,t.jsx)(s.SelectControl,{label:(0,a.__)("Volgorde","owc-mijn-services"),value:g,options:[{label:(0,a.__)("Nieuwste eerst","owc-mijn-services"),value:"-"},{label:(0,a.__)("Oudste eerst","owc-mijn-services"),value:"+"}],onChange:e=>l({orderByDirection:e})})]})})]}),(0,t.jsx)("div",{...(0,n.useBlockProps)(),children:(0,t.jsx)(s.Placeholder,{icon:"list-view",label:(0,a.__)("Het persoonlijke zakenoverzicht","owc-mijn-services"),instructions:(0,a.__)("Toont een overzicht van de zaken voor de ingelogde gebruiker.","owc-mijn-services")})})]})},save:function(){return null}})}},n={};function s(e){var a=n[e];if(void 0!==a)return a.exports;var t=n[e]={exports:{}};return i[e](t,t.exports,s),t.exports}s.m=i,e=[],s.O=(i,n,a,t)=>{if(!n){var r=1/0;for(d=0;d=t)&&Object.keys(s.O).every((e=>s.O[e](n[o])))?n.splice(o--,1):(l=!1,t0&&e[d-1][2]>t;d--)e[d]=e[d-1];e[d]=[n,a,t]},s.o=(e,i)=>Object.prototype.hasOwnProperty.call(e,i),(()=>{var e={500:0,860:0};s.O.j=i=>0===e[i];var i=(i,n)=>{var a,t,[r,l,o]=n,c=0;if(r.some((i=>0!==e[i]))){for(a in l)s.o(l,a)&&(s.m[a]=l[a]);if(o)var d=o(s)}for(i&&i(n);cs(507)));a=s.O(a)})(); \ No newline at end of file diff --git a/build/mijn-zaken/view.asset.php b/build/mijn-zaken/view.asset.php index bf814fd..9acfa65 100644 --- a/build/mijn-zaken/view.asset.php +++ b/build/mijn-zaken/view.asset.php @@ -1 +1 @@ - array('react', 'react-jsx-runtime', 'wp-element'), 'version' => '9159b150c16982566ba2'); + array('react', 'react-jsx-runtime', 'wp-element'), 'version' => '6b349baaee13d707bf7f'); diff --git a/build/mijn-zaken/view.js b/build/mijn-zaken/view.js index cf80de2..a99c582 100644 --- a/build/mijn-zaken/view.js +++ b/build/mijn-zaken/view.js @@ -1 +1 @@ -(()=>{"use strict";var a={n:e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return a.d(n,{a:n}),n},d:(e,n)=>{for(var r in n)a.o(n,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},o:(a,e)=>Object.prototype.hasOwnProperty.call(a,e)};const e=window.wp.element,n=window.React;var r=a.n(n);function t(a){var e,n,r="";if("string"==typeof a||"number"==typeof a)r+=a;else if("object"==typeof a)if(Array.isArray(a)){var o=a.length;for(e=0;e= 16");if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,e){if((n=n||0)<0||n+16>e.length)throw new RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let a=0;a<16;++a)e[n+a]=r[a];return e}return function(a,e=0){return(l[a[e+0]]+l[a[e+1]]+l[a[e+2]]+l[a[e+3]]+"-"+l[a[e+4]]+l[a[e+5]]+"-"+l[a[e+6]]+l[a[e+7]]+"-"+l[a[e+8]]+l[a[e+9]]+"-"+l[a[e+10]]+l[a[e+11]]+l[a[e+12]]+l[a[e+13]]+l[a[e+14]]+l[a[e+15]]).toLowerCase()}(r)};var h=function(){return h=Object.assign||function(a){for(var e,n=1,r=arguments.length;n0?i[0].tabRef:void 0})),p=g[0],f=g[1],m=(0,n.useState)(),k=m[0],x=m[1],O=(0,n.useState)(),E=O[0],N=O[1];(0,n.useEffect)((function(){l(i.map((function(a,e){return h(h({},a),{tab:h({},o[e])})})))}),[o]),(0,n.useEffect)((function(){var a;void 0!==k&&(null===(a=null==k?void 0:k.current)||void 0===a||a.focus())}),[k]),(0,n.useEffect)((function(){var a,e;void 0!==p&&N({left:null===(a=p.current)||void 0===a?void 0:a.offsetLeft,width:null===(e=p.current)||void 0===e?void 0:e.offsetWidth})}),[p]);var j={"--_denhaag-tabs-tab-indicator-inset-inline-start":"".concat(null!==(e=null==E?void 0:E.left)&&void 0!==e?e:0,"px"),"--_denhaag-tabs-tab-indicator-size":"".concat(null!==(t=null==E?void 0:E.width)&&void 0!==t?t:0,"px")};return r().createElement(r().Fragment,null,r().createElement(b,null,r().createElement(v,{tabIndex:-1,onKeyDown:function(a){"ArrowRight"===a.key?(a.preventDefault(),x((function(a){var e,n,r,t=(n=function(e){return e.tabRef===a},r=(e=i).findIndex(n),e[r===e.length-1?0:r+1]);return null==t?void 0:t.tabRef}))):"ArrowLeft"===a.key?(a.preventDefault(),x((function(a){var e,n,r,t=(n=function(e){return e.tabRef===a},r=(e=i).findIndex(n),e[0===r?e.length-1:r-1]);return null==t?void 0:t.tabRef}))):"Enter"===a.key&&f(k)}},i.map((function(a){var e=a.tab,n=a.tabRef,t=a.tabId,o=a.tabPanelId;return r().createElement(y,{id:t,key:t,"aria-controls":o,tabIndex:p===n?0:-1,ref:n,selected:p===n,onClick:function(){return function(a){f(a),x(a),null==d||d(i.findIndex((function(e){return e.tabRef===a})))}(n)},onFocus:function(){return function(a){x(a)}(n)}},r().createElement(_,null,e.label))}))),r().createElement(u,{style:j})),i.map((function(a){var e=a.tab,n=a.tabRef,t=a.tabId,o=a.tabPanelId;return r().createElement(w,{id:o,key:o,"aria-labelledby":t,tabIndex:0,selected:p===n,hidden:p!==n},e.panelContent)})))};const O=window.ReactJSXRuntime,E=a=>(0,O.jsx)(x,{...a});var N=".denhaag-link{color:var(--denhaag-link-color);cursor:var(--denhaag-link-cursor,pointer);font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding-inline-end:var(--denhaag-link-padding-inline-end,0);padding-inline-start:var(--denhaag-link-padding-inline-start,0);position:relative;text-decoration:var(--denhaag-link-text-decoration)}.denhaag-link--with-icon{--nl-link-text-decoration-line:none;align-items:center;display:inline-flex;gap:var(--denhaag-link-icon-gap);text-decoration:none;vertical-align:var(--denhaag-link-with-icon-vertical-align,baseline)}.denhaag-link--with-small-icon{--denhaag-link-icon-font-size:var(--denhaag-link-small-icon-font-size);--denhaag-link-icon-size:var(--denhaag-link-small-icon-size)}.denhaag-link--with-icon-start{--denhaag-link-icon-order:0;--denhaag-link-padding-inline-start:0}.denhaag-link--external,.denhaag-link--focus,.denhaag-link--hover,.denhaag-link:focus-visible,.denhaag-link:hover{text-decoration:var(--denhaag-link-text-decoration)}.denhaag-link--with-icon-end{--denhaag-link-icon-order:2;--denhaag-link-padding-inline-end:0}.denhaag-link--external{--denhaag-link-icon-align:var(--denhaag-link-external-icon-align)}.denhaag-link--focus,.denhaag-link:focus-visible{--denhaag-link-color:var(--denhaag-link-focus-color);outline:var(--denhaag-link-focus-outline)}.denhaag-link--hover,.denhaag-link:hover{--denhaag-link-color:var(--denhaag-link-hover-color);--denhaag-link-cursor:pointer}.denhaag-link--disabled,.denhaag-link--disabled--hover,.denhaag-link--disabled:hover{--denhaag-link-color:var(--denhaag-link-disabled-color);--denhaag-link-cursor:none;pointer-events:none}.denhaag-link__icon{align-items:var(--denhaag-link-icon-align);display:inline-flex;justify-content:center;order:var(--denhaag-link-icon-order,0);position:relative;vertical-align:text-top}.denhaag-link__icon,.denhaag-link__icon>:first-child{height:var(--denhaag-link-icon-size);width:var(--denhaag-link-icon-size)}.denhaag-link__icon>:first-child{aspect-ratio:1/1;font-size:var(--denhaag-link-icon-font-size);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.denhaag-link__sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin-block-end:-1px;margin-block-start:-1px;margin-inline-end:-1px;margin-inline-start:-1px;overflow:hidden;padding-block-end:0;padding-block-start:0;padding-inline-end:0;padding-inline-start:0;position:absolute;width:1px}";if("undefined"!=typeof document){const a=document.head||document.getElementsByTagName("head")[0],e=document.createElement("style");e.type="text/css",e.nonce=window.NONCE,a.appendChild(e),e.styleSheet?e.styleSheet.cssText=N:e.appendChild(document.createTextNode(N))}var j=function(){return j=Object.assign||function(a){for(var e,n=1,r=arguments.length;n(0,O.jsx)(sa,{...a});document.addEventListener("DOMContentLoaded",(()=>{document.querySelectorAll(".js-nlds-denhaag-tab-component").forEach((a=>{const n=JSON.parse(a.dataset.tabs).map((a=>({label:a.label,panelContent:a.cards?(0,O.jsx)("div",{className:"denhaag-card-group",children:a.cards.map(((a,e)=>(0,O.jsx)(ha,{...a},e)))}):(0,O.jsx)("div",{dangerouslySetInnerHTML:{__html:a.html||""}})})));(0,e.createRoot)(a).render((0,O.jsx)(E,{tabData:n}))}))}))})(); \ No newline at end of file +(()=>{"use strict";var a={n:e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return a.d(n,{a:n}),n},d:(e,n)=>{for(var r in n)a.o(n,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},o:(a,e)=>Object.prototype.hasOwnProperty.call(a,e)};const e=window.wp.element,n=window.React;var r=a.n(n);function t(a){var e,n,r="";if("string"==typeof a||"number"==typeof a)r+=a;else if("object"==typeof a)if(Array.isArray(a)){var o=a.length;for(e=0;e= 16");if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,e){if((n=n||0)<0||n+16>e.length)throw new RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let a=0;a<16;++a)e[n+a]=r[a];return e}return function(a,e=0){return(l[a[e+0]]+l[a[e+1]]+l[a[e+2]]+l[a[e+3]]+"-"+l[a[e+4]]+l[a[e+5]]+"-"+l[a[e+6]]+l[a[e+7]]+"-"+l[a[e+8]]+l[a[e+9]]+"-"+l[a[e+10]]+l[a[e+11]]+l[a[e+12]]+l[a[e+13]]+l[a[e+14]]+l[a[e+15]]).toLowerCase()}(r)};var g=function(){return g=Object.assign||function(a){for(var e,n=1,r=arguments.length;n0?i[0].tabRef:void 0})),p=h[0],f=h[1],m=(0,n.useState)(),k=m[0],x=m[1],O=(0,n.useState)(),E=O[0],N=O[1];(0,n.useEffect)((function(){l(i.map((function(a,e){return g(g({},a),{tab:g({},o[e])})})))}),[o]),(0,n.useEffect)((function(){var a;void 0!==k&&(null===(a=null==k?void 0:k.current)||void 0===a||a.focus())}),[k]),(0,n.useEffect)((function(){var a,e;void 0!==p&&N({left:null===(a=p.current)||void 0===a?void 0:a.offsetLeft,width:null===(e=p.current)||void 0===e?void 0:e.offsetWidth})}),[p]);var j={"--_denhaag-tabs-tab-indicator-inset-inline-start":"".concat(null!==(e=null==E?void 0:E.left)&&void 0!==e?e:0,"px"),"--_denhaag-tabs-tab-indicator-size":"".concat(null!==(t=null==E?void 0:E.width)&&void 0!==t?t:0,"px")};return r().createElement(r().Fragment,null,r().createElement(b,null,r().createElement(v,{tabIndex:-1,onKeyDown:function(a){"ArrowRight"===a.key?(a.preventDefault(),x((function(a){var e,n,r,t=(n=function(e){return e.tabRef===a},r=(e=i).findIndex(n),e[r===e.length-1?0:r+1]);return null==t?void 0:t.tabRef}))):"ArrowLeft"===a.key?(a.preventDefault(),x((function(a){var e,n,r,t=(n=function(e){return e.tabRef===a},r=(e=i).findIndex(n),e[0===r?e.length-1:r-1]);return null==t?void 0:t.tabRef}))):"Enter"===a.key&&f(k)}},i.map((function(a){var e=a.tab,n=a.tabRef,t=a.tabId,o=a.tabPanelId;return r().createElement(y,{id:t,key:t,"aria-controls":o,tabIndex:p===n?0:-1,ref:n,selected:p===n,onClick:function(){return function(a){f(a),x(a),null==d||d(i.findIndex((function(e){return e.tabRef===a})))}(n)},onFocus:function(){return function(a){x(a)}(n)}},r().createElement(_,null,e.label))}))),r().createElement(u,{style:j})),i.map((function(a){var e=a.tab,n=a.tabRef,t=a.tabId,o=a.tabPanelId;return r().createElement(w,{id:o,key:o,"aria-labelledby":t,tabIndex:0,selected:p===n,hidden:p!==n},e.panelContent)})))};const O=window.ReactJSXRuntime,E=a=>(0,O.jsx)(x,{...a});var N=".denhaag-link{color:var(--denhaag-link-color);cursor:var(--denhaag-link-cursor,pointer);font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding-inline-end:var(--denhaag-link-padding-inline-end,0);padding-inline-start:var(--denhaag-link-padding-inline-start,0);position:relative;text-decoration:var(--denhaag-link-text-decoration)}.denhaag-link--with-icon{--nl-link-text-decoration-line:none;align-items:center;display:inline-flex;gap:var(--denhaag-link-icon-gap);text-decoration:none;vertical-align:var(--denhaag-link-with-icon-vertical-align,baseline)}.denhaag-link--with-small-icon{--denhaag-link-icon-font-size:var(--denhaag-link-small-icon-font-size);--denhaag-link-icon-size:var(--denhaag-link-small-icon-size)}.denhaag-link--with-icon-start{--denhaag-link-icon-order:0;--denhaag-link-padding-inline-start:0}.denhaag-link--external,.denhaag-link--focus,.denhaag-link--hover,.denhaag-link:focus-visible,.denhaag-link:hover{text-decoration:var(--denhaag-link-text-decoration)}.denhaag-link--with-icon-end{--denhaag-link-icon-order:2;--denhaag-link-padding-inline-end:0}.denhaag-link--external{--denhaag-link-icon-align:var(--denhaag-link-external-icon-align)}.denhaag-link--focus,.denhaag-link:focus-visible{--denhaag-link-color:var(--denhaag-link-focus-color);outline:var(--denhaag-link-focus-outline)}.denhaag-link--hover,.denhaag-link:hover{--denhaag-link-color:var(--denhaag-link-hover-color);--denhaag-link-cursor:pointer}.denhaag-link--disabled,.denhaag-link--disabled--hover,.denhaag-link--disabled:hover{--denhaag-link-color:var(--denhaag-link-disabled-color);--denhaag-link-cursor:none;pointer-events:none}.denhaag-link__icon{align-items:var(--denhaag-link-icon-align);display:inline-flex;justify-content:center;order:var(--denhaag-link-icon-order,0);position:relative;vertical-align:text-top}.denhaag-link__icon,.denhaag-link__icon>:first-child{height:var(--denhaag-link-icon-size);width:var(--denhaag-link-icon-size)}.denhaag-link__icon>:first-child{aspect-ratio:1/1;font-size:var(--denhaag-link-icon-font-size);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.denhaag-link__sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin-block-end:-1px;margin-block-start:-1px;margin-inline-end:-1px;margin-inline-start:-1px;overflow:hidden;padding-block-end:0;padding-block-start:0;padding-inline-end:0;padding-inline-start:0;position:absolute;width:1px}";if("undefined"!=typeof document){const a=document.head||document.getElementsByTagName("head")[0],e=document.createElement("style");e.type="text/css",e.nonce=window.NONCE,a.appendChild(e),e.styleSheet?e.styleSheet.cssText=N:e.appendChild(document.createTextNode(N))}var j=function(){return j=Object.assign||function(a){for(var e,n=1,r=arguments.length;n(0,O.jsx)(sa,{...a}),ha=({cards:a})=>(0,O.jsx)("div",{className:"denhaag-card-group",children:a.map(((a,e)=>(0,O.jsx)(ga,{...a},e)))}),pa=({message:a})=>(0,O.jsx)("p",{className:"nl-paragraph owc-zaken-empty",children:a}),ba=a=>a.cards?.length?(0,O.jsx)(ha,{cards:a.cards}):a.html?(0,O.jsx)("div",{dangerouslySetInnerHTML:{__html:a.html}}):(0,O.jsx)(pa,{message:a.emptyMessage});document.addEventListener("DOMContentLoaded",(()=>{document.querySelectorAll(".js-nlds-denhaag-tab-component").forEach((a=>{const n=JSON.parse(a.dataset.tabsEnabled??"true"),r=(0,e.createRoot)(a);if(!n){const e=JSON.parse(a.dataset.cards??"[]");return void r.render((0,O.jsx)(ha,{cards:e}))}const t=JSON.parse(a.dataset.tabs).map((a=>({label:a.label,panelContent:ba(a)})));r.render((0,O.jsx)(E,{tabData:t}))}))}))})(); \ No newline at end of file diff --git a/languages/owc-mijn-services.pot b/languages/owc-mijn-services.pot index a42bdca..9e801f9 100644 --- a/languages/owc-mijn-services.pot +++ b/languages/owc-mijn-services.pot @@ -2,40 +2,35 @@ # This file is distributed under the EUPL. msgid "" msgstr "" -"Project-Id-Version: OWC | Mijn Services 0.11.0\n" +"Project-Id-Version: OWC | Mijn Services 0.15.0\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/owc-mijn-services\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"POT-Creation-Date: 2026-08-03T10:00:10+00:00\n" +"POT-Creation-Date: 2026-09-07T12:29:21+00:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "X-Generator: WP-CLI 2.12.0\n" "X-Domain: owc-mijn-services\n" #. Plugin Name of the plugin -#: owc-mijn-services.php msgid "OWC | Mijn Services" msgstr "" #. Plugin URI of the plugin -#: owc-mijn-services.php msgid "https://github.com/OpenWebconcept/plugin-owc-mijn-services" msgstr "" #. Description of the plugin -#: owc-mijn-services.php msgid "Toon mijn zaken" msgstr "" #. Author of the plugin -#: owc-mijn-services.php msgid "Yard | Digital Agency" msgstr "" #. Author URI of the plugin -#: owc-mijn-services.php msgid "https://www.yard.nl" msgstr "" @@ -65,10 +60,16 @@ msgid "De gekozen zaaksysteem leverancier ondersteunt geen zaken." msgstr "" #: src/Blocks/MijnZaken.php:24 +#: build/mijn-zaken/index.js:205 +#: resources/blocks/mijn-zaken/edit.js:279 +#: build/mijn-zaken/index.js:279 msgid "Het persoonlijke zakenoverzicht" msgstr "" #: src/Blocks/MijnZaken.php:25 +#: build/mijn-zaken/index.js:206 +#: resources/blocks/mijn-zaken/edit.js:283 +#: build/mijn-zaken/index.js:283 msgid "Toont een overzicht van de zaken voor de ingelogde gebruiker." msgstr "" @@ -97,15 +98,15 @@ msgstr "" msgid "Beveiliging" msgstr "" -#: src/Controllers/InformatieobjecttypenCacheController.php:51 +#: src/Controllers/InformatieobjecttypenCacheController.php:52 msgid "Informatieobjecttypen opnieuw ophalen" msgstr "" -#: src/Controllers/InformatieobjecttypenCacheController.php:63 +#: src/Controllers/InformatieobjecttypenCacheController.php:64 msgid "Je hebt geen toestemming om deze actie uit te voeren." msgstr "" -#: src/Controllers/InformatieobjecttypenCacheController.php:87 +#: src/Controllers/InformatieobjecttypenCacheController.php:88 msgid "De cache van de informatieobjecttypen is geleegd. Ze worden opnieuw opgehaald bij het volgende gebruik of bij de volgende geplande taak." msgstr "" @@ -117,82 +118,282 @@ msgstr "" msgid "Ophalen van het resultaat is mislukt" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:65 +#: src/Settings/OptionsPageRegistrar.php:56 msgid "OWC Mijn Services" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:80 +#: src/Settings/OptionsPageRegistrar.php:75 msgid "Logboekinstellingen" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:81 +#: src/Settings/OptionsPageRegistrar.php:76 msgid "Schakel deze optie in om het loggen van systeemactiviteiten en foutmeldingen te activeren. Dit kan nuttig zijn voor het opsporen en oplossen van problemen binnen de plug-in." msgstr "" -#: src/Settings/OptionsPageRegistrar.php:93 +#: src/Settings/OptionsPageRegistrar.php:88 msgid "DOC- en DOCX-documenten uitsluiten" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:94 +#: src/Settings/OptionsPageRegistrar.php:89 msgid "Schakel deze optie in om DOC- en DOCX-documenten niet op te halen bij het tonen van een zaak." msgstr "" -#: src/Settings/OptionsPageRegistrar.php:106 +#: src/Settings/OptionsPageRegistrar.php:101 msgid "Toegestane informatieobjecttypen" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:107 +#: src/Settings/OptionsPageRegistrar.php:102 msgid "Selecteer de informatieobjecttypen die mogen worden gebruikt voor het ophalen van informatieobjecten bij een zaak. Laat dit veld leeg om alle informatieobjecten te tonen." msgstr "" -#: src/Settings/OptionsPageRegistrar.php:122 +#: src/Settings/OptionsPageRegistrar.php:117 msgid "Informatieobjecttype toevoegen" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:132 +#: src/Settings/OptionsPageRegistrar.php:125 msgid "Productiecontroles uitschakelen" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:133 +#: src/Settings/OptionsPageRegistrar.php:126 msgid "Schakel deze optie in om de verplichting van het gebruik van de blokattributen 'Filter op BSN' of 'Filter op KVK' uit te zetten. Standaard zijn productiecontroles ingeschakeld en is minimaal één van beide filterattributen vereist." msgstr "" -#: src/Settings/OptionsPageRegistrar.php:145 +#: src/Settings/OptionsPageRegistrar.php:138 msgid "Filtering op KVK uitschakelen" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:146 +#: src/Settings/OptionsPageRegistrar.php:139 msgid "Schakel deze optie in als de leverancier het filteren op KVK (eHerkenning) niet ondersteunt. Gebruikers die via eHerkenning zijn ingelogd kunnen dan geen zaken ophalen." msgstr "" -#: src/Settings/OptionsPageRegistrar.php:158 +#: src/Settings/OptionsPageRegistrar.php:151 msgid "Uitgebreide KVK-filtering inschakelen" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:159 +#: src/Settings/OptionsPageRegistrar.php:152 msgid "Schakel deze optie in om bij het filteren op KVK (eHerkenning) ook te filteren op RSIN of vestigingsnummer, indien beschikbaar. Niet elke leverancier ondersteunt deze filterparameters." msgstr "" -#: src/Settings/OptionsPageRegistrar.php:171 +#: src/Settings/OptionsPageRegistrar.php:164 msgid "Statusstappen zonder datum verbergen" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:172 +#: src/Settings/OptionsPageRegistrar.php:165 msgid "Schakel deze optie in om statusstappen zonder gezette datum te verbergen in het statusoverzicht van een zaak. Dit verbergt ook nog niet bereikte (toekomstige) stappen. Standaard worden alle statusstappen getoond." msgstr "" -#: src/Settings/OptionsPageRegistrar.php:184 +#: src/Settings/OptionsPageRegistrar.php:177 msgid "Volgnummers verbergen" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:185 +#: src/Settings/OptionsPageRegistrar.php:178 msgid "Schakel deze optie in om de volgnummers van statusstappen te verbergen in het statusoverzicht van een zaak. Standaard worden volgnummers getoond." msgstr "" -#: src/Settings/OptionsPageRegistrar.php:206 +#: src/Settings/OptionsPageRegistrar.php:199 msgid "Selecteer een informatieobjecttype" msgstr "" +#: build/mijn-zaken/index.js:50 +#: resources/blocks/mijn-zaken/edit.js:24 +#: build/mijn-zaken/index.js:24 +msgid "Standaard volgorde" +msgstr "" + +#: build/mijn-zaken/index.js:53 +#: resources/blocks/mijn-zaken/edit.js:25 +#: build/mijn-zaken/index.js:25 +msgid "Startdatum" +msgstr "" + +#: build/mijn-zaken/index.js:56 +#: resources/blocks/mijn-zaken/edit.js:26 +#: build/mijn-zaken/index.js:26 +msgid "Einddatum" +msgstr "" + +#: build/mijn-zaken/index.js:59 +#: resources/blocks/mijn-zaken/edit.js:28 +#: build/mijn-zaken/index.js:28 +msgid "Publicatiedatum" +msgstr "" + +#: build/mijn-zaken/index.js:62 +#: resources/blocks/mijn-zaken/edit.js:32 +#: build/mijn-zaken/index.js:32 +msgid "Archiefactiedatum" +msgstr "" + +#: build/mijn-zaken/index.js:65 +#: resources/blocks/mijn-zaken/edit.js:36 +#: build/mijn-zaken/index.js:36 +msgid "Registratiedatum" +msgstr "" + +#: build/mijn-zaken/index.js:68 +#: resources/blocks/mijn-zaken/edit.js:40 +#: build/mijn-zaken/index.js:40 +msgid "Zaaknummer" +msgstr "" + +#: build/mijn-zaken/index.js:107 +#: build/zaak/index.js:1 +#: resources/blocks/mijn-zaken/edit.js:91 +#: resources/blocks/zaak/edit.js:50 +#: build/mijn-zaken/index.js:91 +msgid "Zaaksystemen" +msgstr "" + +#: build/mijn-zaken/index.js:113 +#: resources/blocks/mijn-zaken/edit.js:97 +#: build/mijn-zaken/index.js:97 +msgid "Er zijn nog geen zaaksystemen geconfigureerd in de ZGW API-instellingen." +msgstr "" + +#: build/mijn-zaken/index.js:116 +#: resources/blocks/mijn-zaken/edit.js:105 +#: build/mijn-zaken/index.js:105 +msgid "Uit welke zaaksystemen worden zaken opgehaald?" +msgstr "" + +#: build/mijn-zaken/index.js:127 +#: resources/blocks/mijn-zaken/edit.js:132 +#: build/mijn-zaken/index.js:132 +msgid "Selecteer minimaal één zaaksysteem. Zonder selectie worden er geen zaken getoond." +msgstr "" + +#: build/mijn-zaken/index.js:132 +#: resources/blocks/mijn-zaken/edit.js:143 +#: build/mijn-zaken/index.js:143 +msgid "Zichtbare zaken" +msgstr "" + +#: build/mijn-zaken/index.js:136 +#: resources/blocks/mijn-zaken/edit.js:148 +#: build/mijn-zaken/index.js:148 +msgid "Persoonlijke zaken (DigiD)" +msgstr "" + +#: build/mijn-zaken/index.js:137 +#: resources/blocks/mijn-zaken/edit.js:152 +#: build/mijn-zaken/index.js:152 +msgid "Zaken gekoppeld aan het BSN van de ingelogde gebruiker." +msgstr "" + +#: build/mijn-zaken/index.js:145 +#: resources/blocks/mijn-zaken/edit.js:164 +#: build/mijn-zaken/index.js:164 +msgid "Zet \"Persoonlijke zaken\" aan, anders worden er geen zaken getoond." +msgstr "" + +#: build/mijn-zaken/index.js:145 +#: resources/blocks/mijn-zaken/edit.js:168 +#: build/mijn-zaken/index.js:168 +msgid "Zet minimaal één van beide opties aan, anders worden er geen zaken getoond." +msgstr "" + +#: build/mijn-zaken/index.js:149 +#: resources/blocks/mijn-zaken/edit.js:176 +#: build/mijn-zaken/index.js:176 +msgid "Zakelijke zaken (eHerkenning) zijn uitgeschakeld in de plugin-instellingen." +msgstr "" + +#: build/mijn-zaken/index.js:151 +#: resources/blocks/mijn-zaken/edit.js:183 +#: build/mijn-zaken/index.js:183 +msgid "Zakelijke zaken (eHerkenning)" +msgstr "" + +#: build/mijn-zaken/index.js:152 +#: resources/blocks/mijn-zaken/edit.js:187 +#: build/mijn-zaken/index.js:187 +msgid "Zaken gekoppeld aan het KVK-nummer van de ingelogde gebruiker." +msgstr "" + +#: build/mijn-zaken/index.js:160 +#: resources/blocks/mijn-zaken/edit.js:201 +#: build/mijn-zaken/index.js:201 +msgid "Weergave" +msgstr "" + +#: build/mijn-zaken/index.js:164 +#: resources/blocks/mijn-zaken/edit.js:206 +#: build/mijn-zaken/index.js:206 +msgid "Tabbladen tonen" +msgstr "" + +#: build/mijn-zaken/index.js:165 +#: resources/blocks/mijn-zaken/edit.js:212 +#: build/mijn-zaken/index.js:212 +msgid "Lopende en afgeronde zaken staan in aparte tabbladen." +msgstr "" + +#: build/mijn-zaken/index.js:165 +#: resources/blocks/mijn-zaken/edit.js:216 +#: build/mijn-zaken/index.js:216 +msgid "Alle zaken staan onder elkaar in één lijst." +msgstr "" + +#: build/mijn-zaken/index.js:171 +#: resources/blocks/mijn-zaken/edit.js:227 +#: build/mijn-zaken/index.js:227 +msgid "Aantal zaken" +msgstr "" + +#: build/mijn-zaken/index.js:179 +#: resources/blocks/mijn-zaken/edit.js:239 +#: build/mijn-zaken/index.js:239 +msgid "Sorteren op" +msgstr "" + +#: build/mijn-zaken/index.js:186 +#: resources/blocks/mijn-zaken/edit.js:248 +#: build/mijn-zaken/index.js:248 +msgid "Volgorde" +msgstr "" + +#: build/mijn-zaken/index.js:189 +#: resources/blocks/mijn-zaken/edit.js:252 +#: build/mijn-zaken/index.js:252 +msgid "Nieuwste eerst" +msgstr "" + +#: build/mijn-zaken/index.js:192 +#: resources/blocks/mijn-zaken/edit.js:259 +#: build/mijn-zaken/index.js:259 +msgid "Oudste eerst" +msgstr "" + +#: build/zaak/index.js:1 +#: resources/blocks/zaak/edit.js:44 +msgid "Instellingen" +msgstr "" + +#: build/zaak/index.js:1 +#: resources/blocks/zaak/edit.js:51 +msgid "Selecteer de zaaksystemen waarvan zaken op deze pagina getoond kunnen worden." +msgstr "" + +#: build/zaak/index.js:1 +#: resources/blocks/zaak/edit.js:76 +msgid "Geen leveranciers geconfigureerd." +msgstr "" + +#: build/zaak/index.js:1 +#: resources/blocks/zaak/edit.js:85 +msgid "Schakel de filteroptie Filter op BSN in." +msgstr "" + +#: build/zaak/index.js:1 +#: resources/blocks/zaak/edit.js:86 +msgid "Selecteer minimaal één filteroptie: Filter op BSN of Filter op KVK." +msgstr "" + +#: build/zaak/index.js:1 +#: resources/blocks/zaak/edit.js:114 +msgid "Filteren op KVK is uitgeschakeld in de instellingen van de plugin." +msgstr "" + #: src/Views/editor/metaboxes/gatekeeper-access-metabox.blade.php:8 msgid "Vereiste authenticatie" msgstr "" @@ -274,59 +475,18 @@ msgstr "" msgid "Er is (momenteel) geen status beschikbaar." msgstr "" -#: build/mijn-zaken/index.js:1 -#: build/zaak/index.js:1 -#: resources/blocks/mijn-zaken/edit.js:57 -#: resources/blocks/zaak/edit.js:44 -msgid "Instellingen" -msgstr "" - -#: build/mijn-zaken/index.js:1 -#: build/zaak/index.js:1 -#: resources/blocks/mijn-zaken/edit.js:63 -#: resources/blocks/zaak/edit.js:50 -msgid "Zaaksystemen" -msgstr "" - -#: build/mijn-zaken/index.js:1 -#: resources/blocks/mijn-zaken/edit.js:64 -msgid "Selecteer de zaaksystemen waaruit de zaken opgehaald moeten worden." -msgstr "" - -#: build/mijn-zaken/index.js:1 -#: build/zaak/index.js:1 -#: resources/blocks/mijn-zaken/edit.js:90 -#: resources/blocks/zaak/edit.js:76 -msgid "Geen leveranciers geconfigureerd." -msgstr "" - -#: build/mijn-zaken/index.js:1 -#: build/zaak/index.js:1 -#: resources/blocks/mijn-zaken/edit.js:99 -#: resources/blocks/zaak/edit.js:85 -msgid "Schakel de filteroptie Filter op BSN in." +#: src/Views/owc-overview-zaken.blade.php:16 +msgid "Lopende zaken" msgstr "" -#: build/mijn-zaken/index.js:1 -#: build/zaak/index.js:1 -#: resources/blocks/mijn-zaken/edit.js:100 -#: resources/blocks/zaak/edit.js:86 -msgid "Selecteer minimaal één filteroptie: Filter op BSN of Filter op KVK." +#: src/Views/owc-overview-zaken.blade.php:19 +msgid "U heeft op dit moment geen lopende zaken." msgstr "" -#: build/mijn-zaken/index.js:1 -#: build/zaak/index.js:1 -#: resources/blocks/mijn-zaken/edit.js:128 -#: resources/blocks/zaak/edit.js:114 -msgid "Filteren op KVK is uitgeschakeld in de instellingen van de plugin." -msgstr "" - -#: build/mijn-zaken/index.js:1 -#: resources/blocks/mijn-zaken/edit.js:135 -msgid "Aantal zaken" +#: src/Views/owc-overview-zaken.blade.php:22 +msgid "Afgeronde zaken" msgstr "" -#: build/zaak/index.js:1 -#: resources/blocks/zaak/edit.js:51 -msgid "Selecteer de zaaksystemen waarvan zaken op deze pagina getoond kunnen worden." +#: src/Views/owc-overview-zaken.blade.php:24 +msgid "U heeft nog geen afgeronde zaken." msgstr "" diff --git a/resources/blocks/mijn-zaken/block.json b/resources/blocks/mijn-zaken/block.json index 4c2a27f..107d43c 100644 --- a/resources/blocks/mijn-zaken/block.json +++ b/resources/blocks/mijn-zaken/block.json @@ -10,6 +10,7 @@ "zaakClients": { "type": "array", "default": [] }, "byBSN": { "type": "boolean", "default": true }, "byKVK": { "type": "boolean", "default": false }, + "showTabs": { "type": "boolean", "default": true }, "perPage": { "type": "number", "default": 10 diff --git a/resources/blocks/mijn-zaken/edit.js b/resources/blocks/mijn-zaken/edit.js index 4919921..fc89382 100644 --- a/resources/blocks/mijn-zaken/edit.js +++ b/resources/blocks/mijn-zaken/edit.js @@ -5,43 +5,70 @@ import { useEffect } from '@wordpress/element'; import { InspectorControls, useBlockProps } from '@wordpress/block-editor'; import { PanelBody, - Disabled, - BaseControl, CheckboxControl, Notice, + Placeholder, RangeControl, SelectControl, + ToggleControl, + __experimentalVStack as VStack, } from '@wordpress/components'; -import ServerSideRender from '@wordpress/server-side-render'; import { __ } from '@wordpress/i18n'; /** * Internal dependencies. */ -import metadata from './block.json'; import './editor.css'; -export default function Edit( { attributes, setAttributes } ) { +const ORDER_BY_OPTIONS = [ + { label: __( 'Standaard volgorde', 'owc-mijn-services' ), value: '' }, + { label: __( 'Startdatum', 'owc-mijn-services' ), value: 'startdatum' }, + { label: __( 'Einddatum', 'owc-mijn-services' ), value: 'einddatum' }, + { + label: __( 'Publicatiedatum', 'owc-mijn-services' ), + value: 'publicatiedatum', + }, + { + label: __( 'Archiefactiedatum', 'owc-mijn-services' ), + value: 'archiefactiedatum', + }, + { + label: __( 'Registratiedatum', 'owc-mijn-services' ), + value: 'registratiedatum', + }, + { + label: __( 'Zaaknummer', 'owc-mijn-services' ), + value: 'identificatie', + }, +]; + +const MIN_PER_PAGE = 1; +const MAX_PER_PAGE = 25; + +const Edit = ( { attributes, setAttributes } ) => { const { zaakClient, zaakClients, byBSN, byKVK, + showTabs, perPage, orderBy, orderByDirection, } = attributes; - const min = 1; - const max = 25; - const suppliers = ( window?.owcMyServices?.zaakClientOptions ?? [] ).filter( ( opt ) => opt.value !== '' ); - const productionChecksEnabled = window?.owcMyServices?.productionChecksEnabled ?? true; - const bsnKvkMissing = productionChecksEnabled && ! byBSN && ! ( byKVK && ! disableKVKFiltering ); - const disableKVKFiltering = window?.owcMyServices?.disableKVKFiltering ?? false; + const productionChecksEnabled = + window?.owcMyServices?.productionChecksEnabled ?? true; + const disableKVKFiltering = + window?.owcMyServices?.disableKVKFiltering ?? false; + const bsnKvkMissing = + productionChecksEnabled && + ! byBSN && + ! ( byKVK && ! disableKVKFiltering ); // Migrate legacy single zaakClient string to zaakClients array. useEffect( () => { @@ -50,159 +77,206 @@ export default function Edit( { attributes, setAttributes } ) { } }, [] ); + const toggleSupplier = ( supplier, checked ) => + setAttributes( { + zaakClients: checked + ? [ ...zaakClients, supplier ] + : zaakClients.filter( ( value ) => value !== supplier ), + } ); + return ( <> - { suppliers.length > 0 ? ( - + { suppliers.length === 0 ? ( + + { __( + 'Er zijn nog geen zaaksystemen geconfigureerd in de ZGW API-instellingen.', + 'owc-mijn-services' + ) } + + ) : ( + <> +

+ { __( + 'Uit welke zaaksystemen worden zaken opgehaald?', + 'owc-mijn-services' + ) } +

+ + { suppliers.map( ( supplier ) => ( + + toggleSupplier( + supplier.value, + checked + ) + } + /> + ) ) } + + { zaakClients.length === 0 && ( + + { __( + 'Selecteer minimaal één zaaksysteem. Zonder selectie worden er geen zaken getoond.', + 'owc-mijn-services' + ) } + + ) } + + ) } + +
+ + + - { suppliers.map( ( supplier ) => ( - { - const next = checked - ? [ ...zaakClients, supplier.value ] - : zaakClients.filter( - ( v ) => - v !== supplier.value - ); - setAttributes( { zaakClients: next } ); - } } - /> - ) ) } - - ) : ( -

- { __( - 'Geen leveranciers geconfigureerd.', + help={ __( + 'Zaken gekoppeld aan het BSN van de ingelogde gebruiker.', 'owc-mijn-services' ) } -

- ) } - { bsnKvkMissing && ( - - { disableKVKFiltering - ? __( 'Schakel de filteroptie Filter op BSN in.', 'owc-mijn-services' ) - : __( 'Selecteer minimaal één filteroptie: Filter op BSN of Filter op KVK.', 'owc-mijn-services' ) + checked={ byBSN } + onChange={ ( value ) => + setAttributes( { byBSN: value } ) } - - ) } - - setAttributes( { - byBSN, - } ) - } - /> - { ! disableKVKFiltering && ( - - setAttributes( { - byKVK, - } ) + /> + { bsnKvkMissing && ( + + { disableKVKFiltering + ? __( + 'Zet "Persoonlijke zaken" aan, anders worden er geen zaken getoond.', + 'owc-mijn-services' + ) + : __( + 'Zet minimaal één van beide opties aan, anders worden er geen zaken getoond.', + 'owc-mijn-services' + ) } + + ) } + { disableKVKFiltering ? ( + + { __( + 'Zakelijke zaken (eHerkenning) zijn uitgeschakeld in de plugin-instellingen.', + 'owc-mijn-services' + ) } + + ) : ( + + setAttributes( { byKVK: value } ) + } + /> + ) } + +
+
+ + + + setAttributes( { showTabs: value } ) } /> - ) } - { disableKVKFiltering && ( - - { __( - 'Filteren op KVK is uitgeschakeld in de instellingen van de plugin.', + - ) } - - setAttributes( { perPage: value } ) - } - /> - - setAttributes( { - orderBy: neworderBy, - } ) - } - /> - { orderBy && '' !== orderBy && ( + value={ perPage } + min={ MIN_PER_PAGE } + max={ MAX_PER_PAGE } + onChange={ ( value ) => + setAttributes( { perPage: value } ) + } + /> - setAttributes( { - orderByDirection: neworderByDirection, - } ) + label={ __( 'Sorteren op', 'owc-mijn-services' ) } + value={ orderBy } + options={ ORDER_BY_OPTIONS } + onChange={ ( value ) => + setAttributes( { orderBy: value } ) } /> - ) } + { orderBy && ( + + setAttributes( { + orderByDirection: value, + } ) + } + /> + ) } +
- - - +
); -} +}; + +export default Edit; diff --git a/resources/blocks/mijn-zaken/view.js b/resources/blocks/mijn-zaken/view.js index 3d07ebe..92b89be 100644 --- a/resources/blocks/mijn-zaken/view.js +++ b/resources/blocks/mijn-zaken/view.js @@ -2,28 +2,52 @@ import { createRoot } from '@wordpress/element'; import { Tabs } from './components/Tabs'; import { CaseCard } from './components/CaseCard'; +const CardGroup = ( { cards } ) => ( +
+ { cards.map( ( card, index ) => ( + + ) ) } +
+); + +const EmptyMessage = ( { message } ) => ( +

{ message }

+); + +const renderTabPanel = ( tab ) => { + if ( tab.cards?.length ) { + return ; + } + + if ( tab.html ) { + return
; + } + + return ; +}; + document.addEventListener( 'DOMContentLoaded', () => { const mounts = document.querySelectorAll( '.js-nlds-denhaag-tab-component' ); mounts.forEach( ( el ) => { - const tabsData = JSON.parse( el.dataset.tabs ); + const tabsEnabled = JSON.parse( el.dataset.tabsEnabled ?? 'true' ); + const root = createRoot( el ); + + if ( ! tabsEnabled ) { + const cards = JSON.parse( el.dataset.cards ?? '[]' ); + + root.render( ); - const tabData = tabsData.map( ( tab ) => ( { + return; + } + + const tabData = JSON.parse( el.dataset.tabs ).map( ( tab ) => ( { label: tab.label, - panelContent: tab.cards ? ( -
- { tab.cards.map( ( card, index ) => ( - - ) ) } -
- ) : ( -
- ), + panelContent: renderTabPanel( tab ), } ) ); - const root = createRoot( el ); root.render( ); } ); } ); diff --git a/src/Blocks/MijnZaken.php b/src/Blocks/MijnZaken.php index ba328d9..157aeff 100644 --- a/src/Blocks/MijnZaken.php +++ b/src/Blocks/MijnZaken.php @@ -64,6 +64,8 @@ function ( $zaak ) use ( $attributes ) { return owc_mijn_services_render_view( 'owc-overview-zaken', array( + 'show_tabs' => (bool) ( $attributes['showTabs'] ?? true ), + 'all_zaken' => $this->filter_and_map_zaken( $zaken, fn () => true ), 'current_zaken' => $this->get_current_zaken( $zaken ), 'completed_zaken' => $this->get_completed_zaken( $zaken ), ) diff --git a/src/Providers/BlockServiceProvider.php b/src/Providers/BlockServiceProvider.php index 3401315..aa519db 100644 --- a/src/Providers/BlockServiceProvider.php +++ b/src/Providers/BlockServiceProvider.php @@ -138,6 +138,10 @@ private function register_mijn_zaken_block(): void 'type' => 'boolean', 'default' => false, ), + 'showTabs' => array( + 'type' => 'boolean', + 'default' => true, + ), 'perPage' => array( 'type' => 'number', 'default' => 10, diff --git a/src/Views/owc-error.blade.php b/src/Views/owc-error.blade.php index 9b14d95..4b3981a 100644 --- a/src/Views/owc-error.blade.php +++ b/src/Views/owc-error.blade.php @@ -13,8 +13,8 @@ @endphp @if (isset($message)) -
-

{{ $header_text }}

-

{{ $message }}

+
+

{{ $header_text }}

+

{{ $message }}

@endif diff --git a/src/Views/owc-overview-zaken.blade.php b/src/Views/owc-overview-zaken.blade.php index 69548bd..310c58b 100644 --- a/src/Views/owc-overview-zaken.blade.php +++ b/src/Views/owc-overview-zaken.blade.php @@ -8,17 +8,26 @@ exit(); } - $tabs = array_values(array_filter([ + $show_tabs = $show_tabs ?? true; + $all_zaken = $all_zaken ?? []; + + $tabs = [ [ - 'label' => 'Lopende zaken', + 'label' => __('Lopende zaken', 'owc-mijn-services'), // Uses partials/nlds/denhaag/card to render each card. - 'cards' => $current_zaken, + 'cards' => $current_zaken, + 'emptyMessage' => __('U heeft op dit moment geen lopende zaken.', 'owc-mijn-services'), ], - [ - 'label' => 'Afgeronde zaken', + [ + 'label' => __('Afgeronde zaken', 'owc-mijn-services'), 'cards' => $completed_zaken, + 'emptyMessage' => __('U heeft nog geen afgeronde zaken.', 'owc-mijn-services'), ], - ], fn (array $tab): bool => !empty($tab['cards']))); + ]; @endphp -
+@if ($show_tabs) +
+@else +
+@endif From 1aa17e7315a0318890afb1ee767f481552125075 Mon Sep 17 00:00:00 2001 From: YvetteNikolov Date: Mon, 7 Sep 2026 15:48:54 +0200 Subject: [PATCH 07/22] chore: v0.15.1 --- CHANGELOG.md | 4 ++++ languages/owc-mijn-services.pot | 2 +- owc-mijn-services.php | 4 ++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41593a1..35840d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## [v0.15.1] - 2026-09-07 + +- Feat: tabs toggle, editor panel rework, empty-tab message + ## [v0.15.0] - 2026-09-01 - Change: enabled settings by filtered capability diff --git a/languages/owc-mijn-services.pot b/languages/owc-mijn-services.pot index 9e801f9..59fb4f4 100644 --- a/languages/owc-mijn-services.pot +++ b/languages/owc-mijn-services.pot @@ -2,7 +2,7 @@ # This file is distributed under the EUPL. msgid "" msgstr "" -"Project-Id-Version: OWC | Mijn Services 0.15.0\n" +"Project-Id-Version: OWC | Mijn Services 0.15.1\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/owc-mijn-services\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/owc-mijn-services.php b/owc-mijn-services.php index 70254da..c40be93 100644 --- a/owc-mijn-services.php +++ b/owc-mijn-services.php @@ -12,7 +12,7 @@ * Plugin Name: OWC | Mijn Services * Plugin URI: https://github.com/OpenWebconcept/plugin-owc-mijn-services * Description: Toon mijn zaken - * Version: 0.15.0 + * Version: 0.15.1 * Author: Yard | Digital Agency * Author URI: https://www.yard.nl * License: EUPL @@ -31,7 +31,7 @@ exit; } -const VERSION = '0.15.0'; +const VERSION = '0.15.1'; define( 'OWC_MY_SERVICES_FILE', __FILE__ ); define( 'OWC_MY_SERVICES_DIR_PATH', plugin_dir_path( OWC_MY_SERVICES_FILE ) ); define( 'OWC_MY_SERVICES_PLUGIN_URL', plugins_url( '/', OWC_MY_SERVICES_FILE ) ); From 19b1af455f6da07fca5a548fd2bd95adb89fe40e Mon Sep 17 00:00:00 2001 From: YvetteNikolov Date: Wed, 9 Sep 2026 14:05:07 +0200 Subject: [PATCH 08/22] chore: remove status steps example from view --- .../partials/nlds/denhaag/status.blade.php | 42 ------------------- 1 file changed, 42 deletions(-) diff --git a/src/Views/partials/nlds/denhaag/status.blade.php b/src/Views/partials/nlds/denhaag/status.blade.php index eb6f435..1a163b3 100644 --- a/src/Views/partials/nlds/denhaag/status.blade.php +++ b/src/Views/partials/nlds/denhaag/status.blade.php @@ -11,48 +11,6 @@ $steps ??= []; $collapsible ??= true; - // Example steps data structure with sub steps. - // $steps = [ - // [ - // 'id' => 'step-1', - // 'title' => 'Stap 1: Aanvraag ingediend', - // 'status' => 'checked', - // 'date' => '6 januari 2025', - // 'meta' => 'Door: John Doe', - // ], - // [ - // 'id' => 'step-2', - // 'title' => 'Stap 2: Controle gegevens', - // 'status' => 'current', - // 'date' => '16 januari 2025', - // 'steps' => [ - // [ - // 'id' => 'step-2a', - // 'title' => 'Substap 2a: Controle adres', - // 'status' => 'checked', - // 'date' => '20 januari 2025', - // ], - // [ - // 'id' => 'step-2b', - // 'title' => 'Substap 2b: Controle identiteitsbewijs', - // 'status' => 'current', - // ], - // ], - // ], - // [ - // 'id' => 'step-3', - // 'title' => 'Stap 3: Goedkeuring', - // 'status' => 'not-checked', - // 'date' => '6 februari 2025', - // ], - // [ - // 'id' => 'step-4', - // 'title' => 'Stap 4: Afronden', - // 'status' => 'not-checked', - // 'date' => '6 februari 2025', - // ], - // ]; - @endphp
Date: Thu, 10 Sep 2026 10:32:15 +0200 Subject: [PATCH 09/22] refactor: kvk authentication filter + extended setting always enabled --- config/php-di.php | 3 --- languages/owc-mijn-services.pot | 20 ++++++-------------- src/Settings/OptionsPageRegistrar.php | 13 ------------- src/Traits/AuthenticationFilter.php | 17 ++++------------- 4 files changed, 10 insertions(+), 43 deletions(-) diff --git a/config/php-di.php b/config/php-di.php index 367bfb7..20d691b 100644 --- a/config/php-di.php +++ b/config/php-di.php @@ -100,9 +100,6 @@ function ( $client ) use ( $name ) { 'display.disable-kvk-filtering' => function ( Container $container ) { return (bool) $container->make( 'zgw.settings', array( 'owc-mijn-services-disable-kvk-filtering' ) ); }, - 'display.enable-extended-kvk-filtering' => function ( Container $container ) { - return (bool) $container->make( 'zgw.settings', array( 'owc-mijn-services-enable-extended-kvk-filtering' ) ); - }, 'display.hide-status-steps-without-date' => function ( Container $container ) { return (bool) $container->make( 'zgw.settings', array( 'owc-mijn-services-hide-status-steps-without-date' ) ); }, diff --git a/languages/owc-mijn-services.pot b/languages/owc-mijn-services.pot index 59fb4f4..0d42e56 100644 --- a/languages/owc-mijn-services.pot +++ b/languages/owc-mijn-services.pot @@ -2,14 +2,14 @@ # This file is distributed under the EUPL. msgid "" msgstr "" -"Project-Id-Version: OWC | Mijn Services 0.15.1\n" +"Project-Id-Version: OWC | Mijn Services 0.15.2\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/owc-mijn-services\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"POT-Creation-Date: 2026-09-07T12:29:21+00:00\n" +"POT-Creation-Date: 2026-09-10T00:00:00+00:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "X-Generator: WP-CLI 2.12.0\n" "X-Domain: owc-mijn-services\n" @@ -167,30 +167,22 @@ msgid "Schakel deze optie in als de leverancier het filteren op KVK (eHerkenning msgstr "" #: src/Settings/OptionsPageRegistrar.php:151 -msgid "Uitgebreide KVK-filtering inschakelen" -msgstr "" - -#: src/Settings/OptionsPageRegistrar.php:152 -msgid "Schakel deze optie in om bij het filteren op KVK (eHerkenning) ook te filteren op RSIN of vestigingsnummer, indien beschikbaar. Niet elke leverancier ondersteunt deze filterparameters." -msgstr "" - -#: src/Settings/OptionsPageRegistrar.php:164 msgid "Statusstappen zonder datum verbergen" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:165 +#: src/Settings/OptionsPageRegistrar.php:152 msgid "Schakel deze optie in om statusstappen zonder gezette datum te verbergen in het statusoverzicht van een zaak. Dit verbergt ook nog niet bereikte (toekomstige) stappen. Standaard worden alle statusstappen getoond." msgstr "" -#: src/Settings/OptionsPageRegistrar.php:177 +#: src/Settings/OptionsPageRegistrar.php:164 msgid "Volgnummers verbergen" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:178 +#: src/Settings/OptionsPageRegistrar.php:165 msgid "Schakel deze optie in om de volgnummers van statusstappen te verbergen in het statusoverzicht van een zaak. Standaard worden volgnummers getoond." msgstr "" -#: src/Settings/OptionsPageRegistrar.php:199 +#: src/Settings/OptionsPageRegistrar.php:186 msgid "Selecteer een informatieobjecttype" msgstr "" diff --git a/src/Settings/OptionsPageRegistrar.php b/src/Settings/OptionsPageRegistrar.php index 4b57256..4b4180b 100644 --- a/src/Settings/OptionsPageRegistrar.php +++ b/src/Settings/OptionsPageRegistrar.php @@ -146,19 +146,6 @@ public function addSettingsFields(): void ) ); - $options->add_field( - array( - 'name' => __( 'Uitgebreide KVK-filtering inschakelen', 'owc-mijn-services' ), - 'desc' => __( 'Schakel deze optie in om bij het filteren op KVK (eHerkenning) ook te filteren op RSIN of vestigingsnummer, indien beschikbaar. Niet elke leverancier ondersteunt deze filterparameters.', 'owc-mijn-services' ), - 'id' => 'owc-mijn-services-enable-extended-kvk-filtering', - 'type' => 'checkbox', - 'sanitization_cb' => function ( $value ) { - return $this->handle_unchecked_checkbox( $value ); - }, - 'show_on_cb' => $admin_only_show_on_cb, - ) - ); - $options->add_field( array( 'name' => __( 'Statusstappen zonder datum verbergen', 'owc-mijn-services' ), diff --git a/src/Traits/AuthenticationFilter.php b/src/Traits/AuthenticationFilter.php index ebf1726..41e7243 100644 --- a/src/Traits/AuthenticationFilter.php +++ b/src/Traits/AuthenticationFilter.php @@ -19,7 +19,6 @@ exit; } -use OWC\My_Services\ContainerResolver; use OWC\ZGW\Endpoints\Filter\ZakenFilter; use OWC\ZGW\Entities\Attributes\SubjectType; use OWC\ZGW\Entities\Rol; @@ -45,31 +44,23 @@ trait AuthenticationFilter * Applies exactly one KVK-based identification filter, preferring vestigingsNummer, then * RSIN, then the plain kvkNummer, so only one is ever active. * - * RSIN and vestigingsNummer are not supported by every supplier, so they are - * only used when explicitly enabled via the 'display.enable-extended-kvk-filtering' setting. + * The plain kvkNummer filter is not supported by every supplier and is deprecated, + * so it is no longer used. */ protected function add_kvk_filter( ZakenFilter $filter, string $rsin, string $vestigings_nummer, string $kvk ): bool { - $extended_filtering_enabled = (bool) ContainerResolver::make()->get( 'display.enable-extended-kvk-filtering' ); - - if ($extended_filtering_enabled && '' !== $vestigings_nummer) { + if ('' !== $vestigings_nummer) { $filter->add( 'rol__betrokkeneIdentificatie__vestiging__vestigingsNummer', $vestigings_nummer ); return true; } - if ($extended_filtering_enabled && '' !== $rsin) { + if ('' !== $rsin) { $filter->add( 'rol__betrokkeneIdentificatie__nietNatuurlijkPersoon__innNnpId', $rsin ); return true; } - if ('' !== $kvk) { - $filter->add( 'rol__betrokkeneIdentificatie__vestiging__kvkNummer', $kvk ); - - return true; - } - return false; } From 7b1ceb6636b3f533a3c2cc9bae7e7e843115aae5 Mon Sep 17 00:00:00 2001 From: Mike van den Hoek Date: Thu, 10 Sep 2026 10:32:52 +0200 Subject: [PATCH 10/22] release: v0.16.0 --- CHANGELOG.md | 5 +++++ owc-mijn-services.php | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 35840d1..38af88e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## [v0.16.0] - 2026-09-09 + +- Change: remove deprecated plain KVK-number filter, always filter by vestigingsNummer/RSIN when available +- Change: remove 'Uitgebreide KVK-filtering inschakelen' setting (now always active) + ## [v0.15.1] - 2026-09-07 - Feat: tabs toggle, editor panel rework, empty-tab message diff --git a/owc-mijn-services.php b/owc-mijn-services.php index c40be93..5280cab 100644 --- a/owc-mijn-services.php +++ b/owc-mijn-services.php @@ -12,7 +12,7 @@ * Plugin Name: OWC | Mijn Services * Plugin URI: https://github.com/OpenWebconcept/plugin-owc-mijn-services * Description: Toon mijn zaken - * Version: 0.15.1 + * Version: 0.16.0 * Author: Yard | Digital Agency * Author URI: https://www.yard.nl * License: EUPL @@ -31,7 +31,7 @@ exit; } -const VERSION = '0.15.1'; +const VERSION = '0.16.0'; define( 'OWC_MY_SERVICES_FILE', __FILE__ ); define( 'OWC_MY_SERVICES_DIR_PATH', plugin_dir_path( OWC_MY_SERVICES_FILE ) ); define( 'OWC_MY_SERVICES_PLUGIN_URL', plugins_url( '/', OWC_MY_SERVICES_FILE ) ); From 5b622ad51357765a3367a35e57bf4fcb32e643bc Mon Sep 17 00:00:00 2001 From: Mike van den Hoek Date: Tue, 22 Sep 2026 09:52:43 +0200 Subject: [PATCH 11/22] feat: split informatieobjecttype filtering per supplier --- build/css/informatieobjecttypen-select.css | 1 + build/css/informatieobjecttypen-select.js | 0 build/select2/LICENSE.md | 21 ++ build/select2/select2.min.css | 1 + build/select2/select2.min.js | 2 + config/php-di.php | 14 +- languages/owc-mijn-services.pot | 345 ++++++++---------- package-lock.json | 1 + package.json | 1 + .../js/admin/informatieobjecttypen-select.js | 21 ++ .../admin/informatieobjecttypen-select.scss | 45 +++ resources/vendor/select2/LICENSE.md | 21 ++ resources/vendor/select2/select2.min.css | 1 + resources/vendor/select2/select2.min.js | 2 + src/Blocks/Block.php | 12 +- src/CMB2/SelectOptgroupType.php | 40 +- src/Providers/SettingsServiceProvider.php | 33 ++ .../InformatieObjectDownloadService.php | 10 +- src/Settings/InformatieobjecttypeCatalog.php | 111 ++++++ src/Settings/OptionsPageRegistrar.php | 42 +-- webpack.scss.config.js | 13 +- 21 files changed, 474 insertions(+), 263 deletions(-) create mode 100644 build/css/informatieobjecttypen-select.css create mode 100644 build/css/informatieobjecttypen-select.js create mode 100644 build/select2/LICENSE.md create mode 100644 build/select2/select2.min.css create mode 100644 build/select2/select2.min.js create mode 100644 resources/js/admin/informatieobjecttypen-select.js create mode 100644 resources/scss/admin/informatieobjecttypen-select.scss create mode 100644 resources/vendor/select2/LICENSE.md create mode 100644 resources/vendor/select2/select2.min.css create mode 100644 resources/vendor/select2/select2.min.js create mode 100644 src/Settings/InformatieobjecttypeCatalog.php diff --git a/build/css/informatieobjecttypen-select.css b/build/css/informatieobjecttypen-select.css new file mode 100644 index 0000000..0730bf0 --- /dev/null +++ b/build/css/informatieobjecttypen-select.css @@ -0,0 +1 @@ +#owc-mijn-services-allowed-informatieobjecttypen+.select2-container .select2-selection--multiple .select2-selection__rendered{display:flex;flex-wrap:wrap;align-items:center;padding:5px;gap:4px}#owc-mijn-services-allowed-informatieobjecttypen+.select2-container .select2-selection--multiple .select2-selection__choice{margin:0;float:none}#owc-mijn-services-allowed-informatieobjecttypen+.select2-container .select2-search--inline{margin:0;float:none}#owc-mijn-services-allowed-informatieobjecttypen+.select2-container .select2-search--inline .select2-search__field{height:auto;min-height:0;padding:0;margin:0;box-shadow:none;line-height:normal}#owc-mijn-services-allowed-informatieobjecttypen+.select2-container--default .select2-selection--multiple .select2-selection__clear{margin-top:0} diff --git a/build/css/informatieobjecttypen-select.js b/build/css/informatieobjecttypen-select.js new file mode 100644 index 0000000..e69de29 diff --git a/build/select2/LICENSE.md b/build/select2/LICENSE.md new file mode 100644 index 0000000..8cb8a2b --- /dev/null +++ b/build/select2/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2012-2017 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. diff --git a/build/select2/select2.min.css b/build/select2/select2.min.css new file mode 100644 index 0000000..7c18ad5 --- /dev/null +++ b/build/select2/select2.min.css @@ -0,0 +1 @@ +.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;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !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__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px;padding:1px}.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-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, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 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, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 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, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 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, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 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;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:#fff;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:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} diff --git a/build/select2/select2.min.js b/build/select2/select2.min.js new file mode 100644 index 0000000..091d4b5 --- /dev/null +++ b/build/select2/select2.min.js @@ -0,0 +1,2 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ +!function(n){"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e)),n(t),t}:n(jQuery)}(function(u){var e=function(){if(u&&u.fn&&u.fn.select2&&u.fn.select2.amd)var e=u.fn.select2.amd;var t,n,r,h,o,s,f,g,m,v,y,_,i,a,b;function w(e,t){return i.call(e,t)}function l(e,t){var n,r,i,o,s,a,l,c,u,d,p,h=t&&t.split("/"),f=y.map,g=f&&f["*"]||{};if(e){for(s=(e=e.split("/")).length-1,y.nodeIdCompat&&b.test(e[s])&&(e[s]=e[s].replace(b,"")),"."===e[0].charAt(0)&&h&&(e=h.slice(0,h.length-1).concat(e)),u=0;u":">",'"':""","'":"'","/":"/"};return"string"!=typeof e?e:String(e).replace(/[&<>"'\/\\]/g,function(e){return t[e]})},i.appendMany=function(e,t){if("1.7"===o.fn.jquery.substr(0,3)){var n=o();o.map(t,function(e){n=n.add(e)}),t=n}e.append(t)},i.__cache={};var n=0;return i.GetUniqueElementId=function(e){var t=e.getAttribute("data-select2-id");return null==t&&(e.id?(t=e.id,e.setAttribute("data-select2-id",t)):(e.setAttribute("data-select2-id",++n),t=n.toString())),t},i.StoreData=function(e,t,n){var r=i.GetUniqueElementId(e);i.__cache[r]||(i.__cache[r]={}),i.__cache[r][t]=n},i.GetData=function(e,t){var n=i.GetUniqueElementId(e);return t?i.__cache[n]&&null!=i.__cache[n][t]?i.__cache[n][t]:o(e).data(t):i.__cache[n]},i.RemoveData=function(e){var t=i.GetUniqueElementId(e);null!=i.__cache[t]&&delete i.__cache[t],e.removeAttribute("data-select2-id")},i}),e.define("select2/results",["jquery","./utils"],function(h,f){function r(e,t,n){this.$element=e,this.data=n,this.options=t,r.__super__.constructor.call(this)}return f.Extend(r,f.Observable),r.prototype.render=function(){var e=h('
    ');return this.options.get("multiple")&&e.attr("aria-multiselectable","true"),this.$results=e},r.prototype.clear=function(){this.$results.empty()},r.prototype.displayMessage=function(e){var t=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var n=h(''),r=this.options.get("translations").get(e.message);n.append(t(r(e.args))),n[0].className+=" select2-results__message",this.$results.append(n)},r.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},r.prototype.append=function(e){this.hideLoading();var t=[];if(null!=e.results&&0!==e.results.length){e.results=this.sort(e.results);for(var n=0;n",{class:"select2-results__options select2-results__options--nested"});p.append(l),s.append(a),s.append(p)}else this.template(e,t);return f.StoreData(t,"data",e),t},r.prototype.bind=function(t,e){var l=this,n=t.id+"-results";this.$results.attr("id",n),t.on("results:all",function(e){l.clear(),l.append(e.data),t.isOpen()&&(l.setClasses(),l.highlightFirstItem())}),t.on("results:append",function(e){l.append(e.data),t.isOpen()&&l.setClasses()}),t.on("query",function(e){l.hideMessages(),l.showLoading(e)}),t.on("select",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("unselect",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("open",function(){l.$results.attr("aria-expanded","true"),l.$results.attr("aria-hidden","false"),l.setClasses(),l.ensureHighlightVisible()}),t.on("close",function(){l.$results.attr("aria-expanded","false"),l.$results.attr("aria-hidden","true"),l.$results.removeAttr("aria-activedescendant")}),t.on("results:toggle",function(){var e=l.getHighlightedResults();0!==e.length&&e.trigger("mouseup")}),t.on("results:select",function(){var e=l.getHighlightedResults();if(0!==e.length){var t=f.GetData(e[0],"data");"true"==e.attr("aria-selected")?l.trigger("close",{}):l.trigger("select",{data:t})}}),t.on("results:previous",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e);if(!(n<=0)){var r=n-1;0===e.length&&(r=0);var i=t.eq(r);i.trigger("mouseenter");var o=l.$results.offset().top,s=i.offset().top,a=l.$results.scrollTop()+(s-o);0===r?l.$results.scrollTop(0):s-o<0&&l.$results.scrollTop(a)}}),t.on("results:next",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e)+1;if(!(n>=t.length)){var r=t.eq(n);r.trigger("mouseenter");var i=l.$results.offset().top+l.$results.outerHeight(!1),o=r.offset().top+r.outerHeight(!1),s=l.$results.scrollTop()+o-i;0===n?l.$results.scrollTop(0):ithis.$results.outerHeight()||o<0)&&this.$results.scrollTop(i)}},r.prototype.template=function(e,t){var n=this.options.get("templateResult"),r=this.options.get("escapeMarkup"),i=n(e,t);null==i?t.style.display="none":"string"==typeof i?t.innerHTML=r(i):h(t).append(i)},r}),e.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),e.define("select2/selection/base",["jquery","../utils","../keys"],function(n,r,i){function o(e,t){this.$element=e,this.options=t,o.__super__.constructor.call(this)}return r.Extend(o,r.Observable),o.prototype.render=function(){var e=n('');return this._tabindex=0,null!=r.GetData(this.$element[0],"old-tabindex")?this._tabindex=r.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),e.attr("title",this.$element.attr("title")),e.attr("tabindex",this._tabindex),e.attr("aria-disabled","false"),this.$selection=e},o.prototype.bind=function(e,t){var n=this,r=e.id+"-results";this.container=e,this.$selection.on("focus",function(e){n.trigger("focus",e)}),this.$selection.on("blur",function(e){n._handleBlur(e)}),this.$selection.on("keydown",function(e){n.trigger("keypress",e),e.which===i.SPACE&&e.preventDefault()}),e.on("results:focus",function(e){n.$selection.attr("aria-activedescendant",e.data._resultId)}),e.on("selection:update",function(e){n.update(e.data)}),e.on("open",function(){n.$selection.attr("aria-expanded","true"),n.$selection.attr("aria-owns",r),n._attachCloseHandler(e)}),e.on("close",function(){n.$selection.attr("aria-expanded","false"),n.$selection.removeAttr("aria-activedescendant"),n.$selection.removeAttr("aria-owns"),n.$selection.trigger("focus"),n._detachCloseHandler(e)}),e.on("enable",function(){n.$selection.attr("tabindex",n._tabindex),n.$selection.attr("aria-disabled","false")}),e.on("disable",function(){n.$selection.attr("tabindex","-1"),n.$selection.attr("aria-disabled","true")})},o.prototype._handleBlur=function(e){var t=this;window.setTimeout(function(){document.activeElement==t.$selection[0]||n.contains(t.$selection[0],document.activeElement)||t.trigger("blur",e)},1)},o.prototype._attachCloseHandler=function(e){n(document.body).on("mousedown.select2."+e.id,function(e){var t=n(e.target).closest(".select2");n(".select2.select2-container--open").each(function(){this!=t[0]&&r.GetData(this,"element").select2("close")})})},o.prototype._detachCloseHandler=function(e){n(document.body).off("mousedown.select2."+e.id)},o.prototype.position=function(e,t){t.find(".selection").append(e)},o.prototype.destroy=function(){this._detachCloseHandler(this.container)},o.prototype.update=function(e){throw new Error("The `update` method must be defined in child classes.")},o.prototype.isEnabled=function(){return!this.isDisabled()},o.prototype.isDisabled=function(){return this.options.get("disabled")},o}),e.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(e,t,n,r){function i(){i.__super__.constructor.apply(this,arguments)}return n.Extend(i,t),i.prototype.render=function(){var e=i.__super__.render.call(this);return e.addClass("select2-selection--single"),e.html(''),e},i.prototype.bind=function(t,e){var n=this;i.__super__.bind.apply(this,arguments);var r=t.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",r).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",r),this.$selection.on("mousedown",function(e){1===e.which&&n.trigger("toggle",{originalEvent:e})}),this.$selection.on("focus",function(e){}),this.$selection.on("blur",function(e){}),t.on("focus",function(e){t.isOpen()||n.$selection.trigger("focus")})},i.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},i.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},i.prototype.selectionContainer=function(){return e("")},i.prototype.update=function(e){if(0!==e.length){var t=e[0],n=this.$selection.find(".select2-selection__rendered"),r=this.display(t,n);n.empty().append(r);var i=t.title||t.text;i?n.attr("title",i):n.removeAttr("title")}else this.clear()},i}),e.define("select2/selection/multiple",["jquery","./base","../utils"],function(i,e,l){function n(e,t){n.__super__.constructor.apply(this,arguments)}return l.Extend(n,e),n.prototype.render=function(){var e=n.__super__.render.call(this);return e.addClass("select2-selection--multiple"),e.html('
      '),e},n.prototype.bind=function(e,t){var r=this;n.__super__.bind.apply(this,arguments),this.$selection.on("click",function(e){r.trigger("toggle",{originalEvent:e})}),this.$selection.on("click",".select2-selection__choice__remove",function(e){if(!r.isDisabled()){var t=i(this).parent(),n=l.GetData(t[0],"data");r.trigger("unselect",{originalEvent:e,data:n})}})},n.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},n.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},n.prototype.selectionContainer=function(){return i('
    • ×
    • ')},n.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],n=0;n×');a.StoreData(r[0],"data",t),this.$selection.find(".select2-selection__rendered").prepend(r)}},e}),e.define("select2/selection/search",["jquery","../utils","../keys"],function(r,a,l){function e(e,t,n){e.call(this,t,n)}return e.prototype.render=function(e){var t=r('');this.$searchContainer=t,this.$search=t.find("input");var n=e.call(this);return this._transferTabIndex(),n},e.prototype.bind=function(e,t,n){var r=this,i=t.id+"-results";e.call(this,t,n),t.on("open",function(){r.$search.attr("aria-controls",i),r.$search.trigger("focus")}),t.on("close",function(){r.$search.val(""),r.$search.removeAttr("aria-controls"),r.$search.removeAttr("aria-activedescendant"),r.$search.trigger("focus")}),t.on("enable",function(){r.$search.prop("disabled",!1),r._transferTabIndex()}),t.on("disable",function(){r.$search.prop("disabled",!0)}),t.on("focus",function(e){r.$search.trigger("focus")}),t.on("results:focus",function(e){e.data._resultId?r.$search.attr("aria-activedescendant",e.data._resultId):r.$search.removeAttr("aria-activedescendant")}),this.$selection.on("focusin",".select2-search--inline",function(e){r.trigger("focus",e)}),this.$selection.on("focusout",".select2-search--inline",function(e){r._handleBlur(e)}),this.$selection.on("keydown",".select2-search--inline",function(e){if(e.stopPropagation(),r.trigger("keypress",e),r._keyUpPrevented=e.isDefaultPrevented(),e.which===l.BACKSPACE&&""===r.$search.val()){var t=r.$searchContainer.prev(".select2-selection__choice");if(0this.maximumInputLength?this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),e.define("select2/data/maximumSelectionLength",[],function(){function e(e,t,n){this.maximumSelectionLength=n.get("maximumSelectionLength"),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("select",function(){r._checkIfMaximumSelected()})},e.prototype.query=function(e,t,n){var r=this;this._checkIfMaximumSelected(function(){e.call(r,t,n)})},e.prototype._checkIfMaximumSelected=function(e,n){var r=this;this.current(function(e){var t=null!=e?e.length:0;0=r.maximumSelectionLength?r.trigger("results:message",{message:"maximumSelected",args:{maximum:r.maximumSelectionLength}}):n&&n()})},e}),e.define("select2/dropdown",["jquery","./utils"],function(t,e){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return e.Extend(n,e.Observable),n.prototype.render=function(){var e=t('');return e.attr("dir",this.options.get("dir")),this.$dropdown=e},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n}),e.define("select2/dropdown/search",["jquery","../utils"],function(o,e){function t(){}return t.prototype.render=function(e){var t=e.call(this),n=o('');return this.$searchContainer=n,this.$search=n.find("input"),t.prepend(n),t},t.prototype.bind=function(e,t,n){var r=this,i=t.id+"-results";e.call(this,t,n),this.$search.on("keydown",function(e){r.trigger("keypress",e),r._keyUpPrevented=e.isDefaultPrevented()}),this.$search.on("input",function(e){o(this).off("keyup")}),this.$search.on("keyup input",function(e){r.handleSearch(e)}),t.on("open",function(){r.$search.attr("tabindex",0),r.$search.attr("aria-controls",i),r.$search.trigger("focus"),window.setTimeout(function(){r.$search.trigger("focus")},0)}),t.on("close",function(){r.$search.attr("tabindex",-1),r.$search.removeAttr("aria-controls"),r.$search.removeAttr("aria-activedescendant"),r.$search.val(""),r.$search.trigger("blur")}),t.on("focus",function(){t.isOpen()||r.$search.trigger("focus")}),t.on("results:all",function(e){null!=e.query.term&&""!==e.query.term||(r.showSearch(e)?r.$searchContainer.removeClass("select2-search--hide"):r.$searchContainer.addClass("select2-search--hide"))}),t.on("results:focus",function(e){e.data._resultId?r.$search.attr("aria-activedescendant",e.data._resultId):r.$search.removeAttr("aria-activedescendant")})},t.prototype.handleSearch=function(e){if(!this._keyUpPrevented){var t=this.$search.val();this.trigger("query",{term:t})}this._keyUpPrevented=!1},t.prototype.showSearch=function(e,t){return!0},t}),e.define("select2/dropdown/hidePlaceholder",[],function(){function e(e,t,n,r){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n,r)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),r=t.length-1;0<=r;r--){var i=t[r];this.placeholder.id===i.id&&n.splice(r,1)}return n},e}),e.define("select2/dropdown/infiniteScroll",["jquery"],function(n){function e(e,t,n,r){this.lastParams={},e.call(this,t,n,r),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return e.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&(this.$results.append(this.$loadingMore),this.loadMoreIfNeeded())},e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("query",function(e){r.lastParams=e,r.loading=!0}),t.on("query:append",function(e){r.lastParams=e,r.loading=!0}),this.$results.on("scroll",this.loadMoreIfNeeded.bind(this))},e.prototype.loadMoreIfNeeded=function(){var e=n.contains(document.documentElement,this.$loadingMore[0]);if(!this.loading&&e){var t=this.$results.offset().top+this.$results.outerHeight(!1);this.$loadingMore.offset().top+this.$loadingMore.outerHeight(!1)<=t+50&&this.loadMore()}},e.prototype.loadMore=function(){this.loading=!0;var e=n.extend({},{page:1},this.lastParams);e.page++,this.trigger("query:append",e)},e.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},e.prototype.createLoadingMore=function(){var e=n('
    • '),t=this.options.get("translations").get("loadingMore");return e.html(t(this.lastParams)),e},e}),e.define("select2/dropdown/attachBody",["jquery","../utils"],function(f,a){function e(e,t,n){this.$dropdownParent=f(n.get("dropdownParent")||document.body),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("open",function(){r._showDropdown(),r._attachPositioningHandler(t),r._bindContainerResultHandlers(t)}),t.on("close",function(){r._hideDropdown(),r._detachPositioningHandler(t)}),this.$dropdownContainer.on("mousedown",function(e){e.stopPropagation()})},e.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},e.prototype.position=function(e,t,n){t.attr("class",n.attr("class")),t.removeClass("select2"),t.addClass("select2-container--open"),t.css({position:"absolute",top:-999999}),this.$container=n},e.prototype.render=function(e){var t=f(""),n=e.call(this);return t.append(n),this.$dropdownContainer=t},e.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},e.prototype._bindContainerResultHandlers=function(e,t){if(!this._containerResultsHandlersBound){var n=this;t.on("results:all",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:append",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:message",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("select",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("unselect",function(){n._positionDropdown(),n._resizeDropdown()}),this._containerResultsHandlersBound=!0}},e.prototype._attachPositioningHandler=function(e,t){var n=this,r="scroll.select2."+t.id,i="resize.select2."+t.id,o="orientationchange.select2."+t.id,s=this.$container.parents().filter(a.hasScroll);s.each(function(){a.StoreData(this,"select2-scroll-position",{x:f(this).scrollLeft(),y:f(this).scrollTop()})}),s.on(r,function(e){var t=a.GetData(this,"select2-scroll-position");f(this).scrollTop(t.y)}),f(window).on(r+" "+i+" "+o,function(e){n._positionDropdown(),n._resizeDropdown()})},e.prototype._detachPositioningHandler=function(e,t){var n="scroll.select2."+t.id,r="resize.select2."+t.id,i="orientationchange.select2."+t.id;this.$container.parents().filter(a.hasScroll).off(n),f(window).off(n+" "+r+" "+i)},e.prototype._positionDropdown=function(){var e=f(window),t=this.$dropdown.hasClass("select2-dropdown--above"),n=this.$dropdown.hasClass("select2-dropdown--below"),r=null,i=this.$container.offset();i.bottom=i.top+this.$container.outerHeight(!1);var o={height:this.$container.outerHeight(!1)};o.top=i.top,o.bottom=i.top+o.height;var s=this.$dropdown.outerHeight(!1),a=e.scrollTop(),l=e.scrollTop()+e.height(),c=ai.bottom+s,d={left:i.left,top:o.bottom},p=this.$dropdownParent;"static"===p.css("position")&&(p=p.offsetParent());var h={top:0,left:0};(f.contains(document.body,p[0])||p[0].isConnected)&&(h=p.offset()),d.top-=h.top,d.left-=h.left,t||n||(r="below"),u||!c||t?!c&&u&&t&&(r="below"):r="above",("above"==r||t&&"below"!==r)&&(d.top=o.top-h.top-s),null!=r&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+r),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+r)),this.$dropdownContainer.css(d)},e.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(e.minWidth=e.width,e.position="relative",e.width="auto"),this.$dropdown.css(e)},e.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},e}),e.define("select2/dropdown/minimumResultsForSearch",[],function(){function e(e,t,n,r){this.minimumResultsForSearch=n.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,r)}return e.prototype.showSearch=function(e,t){return!(function e(t){for(var n=0,r=0;r');return e.attr("dir",this.options.get("dir")),this.$container=e,this.$container.addClass("select2-container--"+this.options.get("theme")),u.StoreData(e[0],"element",this.$element),e},d}),e.define("jquery-mousewheel",["jquery"],function(e){return e}),e.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults","./select2/utils"],function(i,e,o,t,s){if(null==i.fn.select2){var a=["open","close","destroy"];i.fn.select2=function(t){if("object"==typeof(t=t||{}))return this.each(function(){var e=i.extend(!0,{},t);new o(i(this),e)}),this;if("string"!=typeof t)throw new Error("Invalid arguments for Select2: "+t);var n,r=Array.prototype.slice.call(arguments,1);return this.each(function(){var e=s.GetData(this,"select2");null==e&&window.console&&console.error&&console.error("The select2('"+t+"') method was called on an element that is not using Select2."),n=e[t].apply(e,r)}),-1 function ( Container $container ) { return (bool) $container->make( 'zgw.settings', array( 'owc-mijn-services-exclude-doc-docx' ) ); }, + /** + * Allowed informatieobjecttypen, grouped per supplier, so filtering only applies to the + * supplier(s) for which informatieobjecttypen were actually selected. + * + * @return array + */ 'display.allowed-informatieobjecttypen' => function ( Container $container ) { $value = $container->make( 'zgw.settings', array( 'owc-mijn-services-allowed-informatieobjecttypen' ) ); + $urls = is_array( $value ) ? array_values( array_filter( $value ) ) : array(); + + if (array() === $urls) { + return array(); + } - return is_array( $value ) ? array_values( array_filter( $value ) ) : array(); + return ( new InformatieobjecttypeCatalog() )->group_by_supplier( $urls ); }, 'display.disable-production-checks' => function ( Container $container ) { return (bool) $container->make( 'zgw.settings', array( 'owc-mijn-services-disable-production-checks' ) ); diff --git a/languages/owc-mijn-services.pot b/languages/owc-mijn-services.pot index 0d42e56..7c2fa3b 100644 --- a/languages/owc-mijn-services.pot +++ b/languages/owc-mijn-services.pot @@ -2,35 +2,40 @@ # This file is distributed under the EUPL. msgid "" msgstr "" -"Project-Id-Version: OWC | Mijn Services 0.15.2\n" +"Project-Id-Version: OWC | Mijn Services 0.16.0\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/owc-mijn-services\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"POT-Creation-Date: 2026-09-10T00:00:00+00:00\n" +"POT-Creation-Date: 2026-09-22T07:11:01+00:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "X-Generator: WP-CLI 2.12.0\n" "X-Domain: owc-mijn-services\n" #. Plugin Name of the plugin +#: owc-mijn-services.php msgid "OWC | Mijn Services" msgstr "" #. Plugin URI of the plugin +#: owc-mijn-services.php msgid "https://github.com/OpenWebconcept/plugin-owc-mijn-services" msgstr "" #. Description of the plugin +#: owc-mijn-services.php msgid "Toon mijn zaken" msgstr "" #. Author of the plugin +#: owc-mijn-services.php msgid "Yard | Digital Agency" msgstr "" #. Author URI of the plugin +#: owc-mijn-services.php msgid "https://www.yard.nl" msgstr "" @@ -60,16 +65,14 @@ msgid "De gekozen zaaksysteem leverancier ondersteunt geen zaken." msgstr "" #: src/Blocks/MijnZaken.php:24 -#: build/mijn-zaken/index.js:205 -#: resources/blocks/mijn-zaken/edit.js:279 -#: build/mijn-zaken/index.js:279 +#: build/mijn-zaken/index.js:1 +#: resources/blocks/mijn-zaken/edit.js:268 msgid "Het persoonlijke zakenoverzicht" msgstr "" #: src/Blocks/MijnZaken.php:25 -#: build/mijn-zaken/index.js:206 -#: resources/blocks/mijn-zaken/edit.js:283 -#: build/mijn-zaken/index.js:283 +#: build/mijn-zaken/index.js:1 +#: resources/blocks/mijn-zaken/edit.js:272 msgid "Toont een overzicht van de zaken voor de ingelogde gebruiker." msgstr "" @@ -118,241 +121,296 @@ msgstr "" msgid "Ophalen van het resultaat is mislukt" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:56 +#: src/Settings/OptionsPageRegistrar.php:52 msgid "OWC Mijn Services" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:75 +#: src/Settings/OptionsPageRegistrar.php:71 msgid "Logboekinstellingen" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:76 +#: src/Settings/OptionsPageRegistrar.php:72 msgid "Schakel deze optie in om het loggen van systeemactiviteiten en foutmeldingen te activeren. Dit kan nuttig zijn voor het opsporen en oplossen van problemen binnen de plug-in." msgstr "" -#: src/Settings/OptionsPageRegistrar.php:88 +#: src/Settings/OptionsPageRegistrar.php:84 msgid "DOC- en DOCX-documenten uitsluiten" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:89 +#: src/Settings/OptionsPageRegistrar.php:85 msgid "Schakel deze optie in om DOC- en DOCX-documenten niet op te halen bij het tonen van een zaak." msgstr "" -#: src/Settings/OptionsPageRegistrar.php:101 +#: src/Settings/OptionsPageRegistrar.php:97 msgid "Toegestane informatieobjecttypen" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:102 +#: src/Settings/OptionsPageRegistrar.php:98 msgid "Selecteer de informatieobjecttypen die mogen worden gebruikt voor het ophalen van informatieobjecten bij een zaak. Laat dit veld leeg om alle informatieobjecten te tonen." msgstr "" -#: src/Settings/OptionsPageRegistrar.php:117 -msgid "Informatieobjecttype toevoegen" +#: src/Settings/OptionsPageRegistrar.php:111 +msgid "Zoek en selecteer informatieobjecttypen…" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:125 +#: src/Settings/OptionsPageRegistrar.php:119 msgid "Productiecontroles uitschakelen" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:126 +#: src/Settings/OptionsPageRegistrar.php:120 msgid "Schakel deze optie in om de verplichting van het gebruik van de blokattributen 'Filter op BSN' of 'Filter op KVK' uit te zetten. Standaard zijn productiecontroles ingeschakeld en is minimaal één van beide filterattributen vereist." msgstr "" -#: src/Settings/OptionsPageRegistrar.php:138 +#: src/Settings/OptionsPageRegistrar.php:132 msgid "Filtering op KVK uitschakelen" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:139 +#: src/Settings/OptionsPageRegistrar.php:133 msgid "Schakel deze optie in als de leverancier het filteren op KVK (eHerkenning) niet ondersteunt. Gebruikers die via eHerkenning zijn ingelogd kunnen dan geen zaken ophalen." msgstr "" -#: src/Settings/OptionsPageRegistrar.php:151 +#: src/Settings/OptionsPageRegistrar.php:145 msgid "Statusstappen zonder datum verbergen" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:152 +#: src/Settings/OptionsPageRegistrar.php:146 msgid "Schakel deze optie in om statusstappen zonder gezette datum te verbergen in het statusoverzicht van een zaak. Dit verbergt ook nog niet bereikte (toekomstige) stappen. Standaard worden alle statusstappen getoond." msgstr "" -#: src/Settings/OptionsPageRegistrar.php:164 +#: src/Settings/OptionsPageRegistrar.php:158 msgid "Volgnummers verbergen" msgstr "" -#: src/Settings/OptionsPageRegistrar.php:165 +#: src/Settings/OptionsPageRegistrar.php:159 msgid "Schakel deze optie in om de volgnummers van statusstappen te verbergen in het statusoverzicht van een zaak. Standaard worden volgnummers getoond." msgstr "" -#: src/Settings/OptionsPageRegistrar.php:186 -msgid "Selecteer een informatieobjecttype" +#: src/Views/editor/metaboxes/gatekeeper-access-metabox.blade.php:8 +msgid "Vereiste authenticatie" +msgstr "" + +#: src/Views/editor/metaboxes/gatekeeper-access-metabox.blade.php:12 +msgid "Maak een keuze" +msgstr "" + +#: src/Views/editor/metaboxes/gatekeeper-access-metabox.blade.php:13 +msgid "DigiD" +msgstr "" + +#: src/Views/editor/metaboxes/gatekeeper-access-metabox.blade.php:14 +msgid "eHerkenning" +msgstr "" + +#: src/Views/editor/metaboxes/gatekeeper-access-metabox.blade.php:15 +msgid "DigiD of eHerkenning" +msgstr "" + +#: src/Views/editor/metaboxes/gatekeeper-access-metabox.blade.php:16 +msgid "Geen sessie toegestaan" +msgstr "" + +#: src/Views/editor/metaboxes/gatekeeper-access-metabox.blade.php:20 +msgid "Voorwaarde om toegang te krijgen tot deze pagina" +msgstr "" + +#: src/Views/editor/metaboxes/gatekeeper-access-metabox.blade.php:27 +msgid "Redirect naar pagina" +msgstr "" + +#: src/Views/editor/metaboxes/gatekeeper-access-metabox.blade.php:31 +msgid "Selecteer een pagina" +msgstr "" + +#: src/Views/editor/metaboxes/gatekeeper-access-metabox.blade.php:42 +msgid "Pagina waarheen gebruikers worden gestuurd als ze niet de vereiste authenticatie hebben." +msgstr "" + +#: src/Views/owc-error.blade.php:11 +msgid "Mijn zaken" +msgstr "" + +#: src/Views/owc-error.blade.php:12 +msgid "Er is een onbekende fout opgetreden. Probeer het later opnieuw." +msgstr "" + +#: src/Views/owc-overview-zaken.blade.php:16 +msgid "Lopende zaken" +msgstr "" + +#: src/Views/owc-overview-zaken.blade.php:19 +msgid "U heeft op dit moment geen lopende zaken." +msgstr "" + +#: src/Views/owc-overview-zaken.blade.php:22 +msgid "Afgeronde zaken" +msgstr "" + +#: src/Views/owc-overview-zaken.blade.php:24 +msgid "U heeft nog geen afgeronde zaken." +msgstr "" + +#: src/Views/owc-single-zaak.blade.php:13 +#: src/Views/partials/nlds/denhaag/card.blade.php:12 +msgid "Zaakomschrijving ontbreekt" +msgstr "" + +#: src/Views/owc-single-zaak.blade.php:38 +msgid "Zaak niet gevonden." +msgstr "" + +#: src/Views/partials/owc-single-zaak-details.blade.php:28 +msgid "Details" +msgstr "" + +#: src/Views/partials/owc-single-zaak-documents.blade.php:13 +msgid "Documenten" +msgstr "" + +#: src/Views/partials/owc-single-zaak-original-application.blade.php:26 +msgid "Originele aanvraag" +msgstr "" + +#: src/Views/partials/owc-single-zaak-result.blade.php:16 +msgid "Zaak resultaat" +msgstr "" + +#: src/Views/partials/owc-single-zaak-status.blade.php:65 +msgid "Status" +msgstr "" + +#: src/Views/partials/owc-single-zaak-status.blade.php:68 +msgid "Er is (momenteel) geen status beschikbaar." msgstr "" -#: build/mijn-zaken/index.js:50 +#: build/mijn-zaken/index.js:1 #: resources/blocks/mijn-zaken/edit.js:24 -#: build/mijn-zaken/index.js:24 msgid "Standaard volgorde" msgstr "" -#: build/mijn-zaken/index.js:53 +#: build/mijn-zaken/index.js:1 #: resources/blocks/mijn-zaken/edit.js:25 -#: build/mijn-zaken/index.js:25 msgid "Startdatum" msgstr "" -#: build/mijn-zaken/index.js:56 +#: build/mijn-zaken/index.js:1 #: resources/blocks/mijn-zaken/edit.js:26 -#: build/mijn-zaken/index.js:26 msgid "Einddatum" msgstr "" -#: build/mijn-zaken/index.js:59 +#: build/mijn-zaken/index.js:1 #: resources/blocks/mijn-zaken/edit.js:28 -#: build/mijn-zaken/index.js:28 msgid "Publicatiedatum" msgstr "" -#: build/mijn-zaken/index.js:62 +#: build/mijn-zaken/index.js:1 #: resources/blocks/mijn-zaken/edit.js:32 -#: build/mijn-zaken/index.js:32 msgid "Archiefactiedatum" msgstr "" -#: build/mijn-zaken/index.js:65 +#: build/mijn-zaken/index.js:1 #: resources/blocks/mijn-zaken/edit.js:36 -#: build/mijn-zaken/index.js:36 msgid "Registratiedatum" msgstr "" -#: build/mijn-zaken/index.js:68 +#: build/mijn-zaken/index.js:1 #: resources/blocks/mijn-zaken/edit.js:40 -#: build/mijn-zaken/index.js:40 msgid "Zaaknummer" msgstr "" -#: build/mijn-zaken/index.js:107 +#: build/mijn-zaken/index.js:1 #: build/zaak/index.js:1 #: resources/blocks/mijn-zaken/edit.js:91 #: resources/blocks/zaak/edit.js:50 -#: build/mijn-zaken/index.js:91 msgid "Zaaksystemen" msgstr "" -#: build/mijn-zaken/index.js:113 +#: build/mijn-zaken/index.js:1 #: resources/blocks/mijn-zaken/edit.js:97 -#: build/mijn-zaken/index.js:97 msgid "Er zijn nog geen zaaksystemen geconfigureerd in de ZGW API-instellingen." msgstr "" -#: build/mijn-zaken/index.js:116 +#: build/mijn-zaken/index.js:1 #: resources/blocks/mijn-zaken/edit.js:105 -#: build/mijn-zaken/index.js:105 msgid "Uit welke zaaksystemen worden zaken opgehaald?" msgstr "" -#: build/mijn-zaken/index.js:127 +#: build/mijn-zaken/index.js:1 #: resources/blocks/mijn-zaken/edit.js:132 -#: build/mijn-zaken/index.js:132 msgid "Selecteer minimaal één zaaksysteem. Zonder selectie worden er geen zaken getoond." msgstr "" -#: build/mijn-zaken/index.js:132 +#: build/mijn-zaken/index.js:1 #: resources/blocks/mijn-zaken/edit.js:143 -#: build/mijn-zaken/index.js:143 msgid "Zichtbare zaken" msgstr "" -#: build/mijn-zaken/index.js:136 +#: build/mijn-zaken/index.js:1 #: resources/blocks/mijn-zaken/edit.js:148 -#: build/mijn-zaken/index.js:148 msgid "Persoonlijke zaken (DigiD)" msgstr "" -#: build/mijn-zaken/index.js:137 +#: build/mijn-zaken/index.js:1 #: resources/blocks/mijn-zaken/edit.js:152 -#: build/mijn-zaken/index.js:152 msgid "Zaken gekoppeld aan het BSN van de ingelogde gebruiker." msgstr "" -#: build/mijn-zaken/index.js:145 +#: build/mijn-zaken/index.js:1 #: resources/blocks/mijn-zaken/edit.js:164 -#: build/mijn-zaken/index.js:164 msgid "Zet \"Persoonlijke zaken\" aan, anders worden er geen zaken getoond." msgstr "" -#: build/mijn-zaken/index.js:145 +#: build/mijn-zaken/index.js:1 #: resources/blocks/mijn-zaken/edit.js:168 -#: build/mijn-zaken/index.js:168 msgid "Zet minimaal één van beide opties aan, anders worden er geen zaken getoond." msgstr "" -#: build/mijn-zaken/index.js:149 +#: build/mijn-zaken/index.js:1 #: resources/blocks/mijn-zaken/edit.js:176 -#: build/mijn-zaken/index.js:176 msgid "Zakelijke zaken (eHerkenning) zijn uitgeschakeld in de plugin-instellingen." msgstr "" -#: build/mijn-zaken/index.js:151 +#: build/mijn-zaken/index.js:1 #: resources/blocks/mijn-zaken/edit.js:183 -#: build/mijn-zaken/index.js:183 msgid "Zakelijke zaken (eHerkenning)" msgstr "" -#: build/mijn-zaken/index.js:152 +#: build/mijn-zaken/index.js:1 #: resources/blocks/mijn-zaken/edit.js:187 -#: build/mijn-zaken/index.js:187 msgid "Zaken gekoppeld aan het KVK-nummer van de ingelogde gebruiker." msgstr "" -#: build/mijn-zaken/index.js:160 +#: build/mijn-zaken/index.js:1 #: resources/blocks/mijn-zaken/edit.js:201 -#: build/mijn-zaken/index.js:201 msgid "Weergave" msgstr "" -#: build/mijn-zaken/index.js:164 +#: build/mijn-zaken/index.js:1 #: resources/blocks/mijn-zaken/edit.js:206 -#: build/mijn-zaken/index.js:206 msgid "Tabbladen tonen" msgstr "" -#: build/mijn-zaken/index.js:165 -#: resources/blocks/mijn-zaken/edit.js:212 -#: build/mijn-zaken/index.js:212 -msgid "Lopende en afgeronde zaken staan in aparte tabbladen." -msgstr "" - -#: build/mijn-zaken/index.js:165 +#: build/mijn-zaken/index.js:1 #: resources/blocks/mijn-zaken/edit.js:216 -#: build/mijn-zaken/index.js:216 -msgid "Alle zaken staan onder elkaar in één lijst." -msgstr "" - -#: build/mijn-zaken/index.js:171 -#: resources/blocks/mijn-zaken/edit.js:227 -#: build/mijn-zaken/index.js:227 msgid "Aantal zaken" msgstr "" -#: build/mijn-zaken/index.js:179 -#: resources/blocks/mijn-zaken/edit.js:239 -#: build/mijn-zaken/index.js:239 +#: build/mijn-zaken/index.js:1 +#: resources/blocks/mijn-zaken/edit.js:228 msgid "Sorteren op" msgstr "" -#: build/mijn-zaken/index.js:186 -#: resources/blocks/mijn-zaken/edit.js:248 -#: build/mijn-zaken/index.js:248 +#: build/mijn-zaken/index.js:1 +#: resources/blocks/mijn-zaken/edit.js:237 msgid "Volgorde" msgstr "" -#: build/mijn-zaken/index.js:189 -#: resources/blocks/mijn-zaken/edit.js:252 -#: build/mijn-zaken/index.js:252 +#: build/mijn-zaken/index.js:1 +#: resources/blocks/mijn-zaken/edit.js:241 msgid "Nieuwste eerst" msgstr "" -#: build/mijn-zaken/index.js:192 -#: resources/blocks/mijn-zaken/edit.js:259 -#: build/mijn-zaken/index.js:259 +#: build/mijn-zaken/index.js:1 +#: resources/blocks/mijn-zaken/edit.js:248 msgid "Oudste eerst" msgstr "" @@ -385,100 +443,3 @@ msgstr "" #: resources/blocks/zaak/edit.js:114 msgid "Filteren op KVK is uitgeschakeld in de instellingen van de plugin." msgstr "" - -#: src/Views/editor/metaboxes/gatekeeper-access-metabox.blade.php:8 -msgid "Vereiste authenticatie" -msgstr "" - -#: src/Views/editor/metaboxes/gatekeeper-access-metabox.blade.php:12 -msgid "Maak een keuze" -msgstr "" - -#: src/Views/editor/metaboxes/gatekeeper-access-metabox.blade.php:13 -msgid "DigiD" -msgstr "" - -#: src/Views/editor/metaboxes/gatekeeper-access-metabox.blade.php:14 -msgid "eHerkenning" -msgstr "" - -#: src/Views/editor/metaboxes/gatekeeper-access-metabox.blade.php:15 -msgid "DigiD of eHerkenning" -msgstr "" - -#: src/Views/editor/metaboxes/gatekeeper-access-metabox.blade.php:16 -msgid "Geen sessie toegestaan" -msgstr "" - -#: src/Views/editor/metaboxes/gatekeeper-access-metabox.blade.php:20 -msgid "Voorwaarde om toegang te krijgen tot deze pagina" -msgstr "" - -#: src/Views/editor/metaboxes/gatekeeper-access-metabox.blade.php:27 -msgid "Redirect naar pagina" -msgstr "" - -#: src/Views/editor/metaboxes/gatekeeper-access-metabox.blade.php:31 -msgid "Selecteer een pagina" -msgstr "" - -#: src/Views/editor/metaboxes/gatekeeper-access-metabox.blade.php:42 -msgid "Pagina waarheen gebruikers worden gestuurd als ze niet de vereiste authenticatie hebben." -msgstr "" - -#: src/Views/owc-error.blade.php:11 -msgid "Mijn zaken" -msgstr "" - -#: src/Views/owc-error.blade.php:12 -msgid "Er is een onbekende fout opgetreden. Probeer het later opnieuw." -msgstr "" - -#: src/Views/owc-single-zaak.blade.php:13 -#: src/Views/partials/nlds/denhaag/card.blade.php:12 -msgid "Zaakomschrijving ontbreekt" -msgstr "" - -#: src/Views/owc-single-zaak.blade.php:36 -msgid "Zaak niet gevonden." -msgstr "" - -#: src/Views/partials/owc-single-zaak-details.blade.php:28 -msgid "Details" -msgstr "" - -#: src/Views/partials/owc-single-zaak-documents.blade.php:13 -msgid "Documenten" -msgstr "" - -#: src/Views/partials/owc-single-zaak-original-application.blade.php:26 -msgid "Originele aanvraag" -msgstr "" - -#: src/Views/partials/owc-single-zaak-result.blade.php:16 -msgid "Zaak resultaat" -msgstr "" - -#: src/Views/partials/owc-single-zaak-status.blade.php:48 -msgid "Status" -msgstr "" - -#: src/Views/partials/owc-single-zaak-status.blade.php:51 -msgid "Er is (momenteel) geen status beschikbaar." -msgstr "" - -#: src/Views/owc-overview-zaken.blade.php:16 -msgid "Lopende zaken" -msgstr "" - -#: src/Views/owc-overview-zaken.blade.php:19 -msgid "U heeft op dit moment geen lopende zaken." -msgstr "" - -#: src/Views/owc-overview-zaken.blade.php:22 -msgid "Afgeronde zaken" -msgstr "" - -#: src/Views/owc-overview-zaken.blade.php:24 -msgid "U heeft nog geen afgeronde zaken." -msgstr "" diff --git a/package-lock.json b/package-lock.json index c1d30c1..cccb2d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,6 +21,7 @@ }, "devDependencies": { "@wordpress/scripts": "^31.8.0", + "copy-webpack-plugin": "^10.2.4", "mini-css-extract-plugin": "^2.9.4", "sass": "^1.93.2" } diff --git a/package.json b/package.json index 8598d23..1d326ec 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ }, "devDependencies": { "@wordpress/scripts": "^31.8.0", + "copy-webpack-plugin": "^10.2.4", "mini-css-extract-plugin": "^2.9.4", "sass": "^1.93.2" } diff --git a/resources/js/admin/informatieobjecttypen-select.js b/resources/js/admin/informatieobjecttypen-select.js new file mode 100644 index 0000000..9ad5871 --- /dev/null +++ b/resources/js/admin/informatieobjecttypen-select.js @@ -0,0 +1,21 @@ +/** + * Turns the grouped 'Toegestane informatieobjecttypen' select into a searchable, + * multi-select Select2 field so a long, per-supplier list stays easy to use. + * + * @package OWC_Mijn_Services + */ +( function ( $ ) { + 'use strict'; + + $( function () { + $( '.owcms-informatieobjecttypen-select' ).each( function () { + const $select = $( this ); + + $select.select2( { + width: '100%', + allowClear: true, + placeholder: $select.data( 'placeholder' ) || '', + } ); + } ); + } ); +} )( jQuery ); diff --git a/resources/scss/admin/informatieobjecttypen-select.scss b/resources/scss/admin/informatieobjecttypen-select.scss new file mode 100644 index 0000000..c2cd7a3 --- /dev/null +++ b/resources/scss/admin/informatieobjecttypen-select.scss @@ -0,0 +1,45 @@ +/** + * Fixes Select2's search input sitting lower than the selected choice pills. + * + * WordPress admin's own input styles override Select2's `margin-top`/`line-height` + * on the inline search field, breaking the vertical alignment Select2 relies on. + * Flex-aligning the row instead makes it robust against that override. + * + * Scoped via the original select's id (Select2 always inserts its widget as the next + * sibling of the source element) instead of a custom container class, since Select2's + * `containerCssClass` option requires the 'full' build and errors on the core build. + */ +#owc-mijn-services-allowed-informatieobjecttypen + .select2-container { + .select2-selection--multiple { + .select2-selection__rendered { + display: flex; + flex-wrap: wrap; + align-items: center; + padding: 5px; + gap: 4px; + } + + .select2-selection__choice { + margin: 0; + float: none; + } + } + + .select2-search--inline { + margin: 0; + float: none; + + .select2-search__field { + height: auto; + min-height: 0; + padding: 0; + margin: 0; + box-shadow: none; + line-height: normal; + } + } +} + +#owc-mijn-services-allowed-informatieobjecttypen + .select2-container--default .select2-selection--multiple .select2-selection__clear { + margin-top: 0; +} diff --git a/resources/vendor/select2/LICENSE.md b/resources/vendor/select2/LICENSE.md new file mode 100644 index 0000000..8cb8a2b --- /dev/null +++ b/resources/vendor/select2/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2012-2017 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. diff --git a/resources/vendor/select2/select2.min.css b/resources/vendor/select2/select2.min.css new file mode 100644 index 0000000..7c18ad5 --- /dev/null +++ b/resources/vendor/select2/select2.min.css @@ -0,0 +1 @@ +.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;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !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__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px;padding:1px}.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-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, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 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, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 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, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 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, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 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;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:#fff;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:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} diff --git a/resources/vendor/select2/select2.min.js b/resources/vendor/select2/select2.min.js new file mode 100644 index 0000000..091d4b5 --- /dev/null +++ b/resources/vendor/select2/select2.min.js @@ -0,0 +1,2 @@ +/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ +!function(n){"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e)),n(t),t}:n(jQuery)}(function(u){var e=function(){if(u&&u.fn&&u.fn.select2&&u.fn.select2.amd)var e=u.fn.select2.amd;var t,n,r,h,o,s,f,g,m,v,y,_,i,a,b;function w(e,t){return i.call(e,t)}function l(e,t){var n,r,i,o,s,a,l,c,u,d,p,h=t&&t.split("/"),f=y.map,g=f&&f["*"]||{};if(e){for(s=(e=e.split("/")).length-1,y.nodeIdCompat&&b.test(e[s])&&(e[s]=e[s].replace(b,"")),"."===e[0].charAt(0)&&h&&(e=h.slice(0,h.length-1).concat(e)),u=0;u":">",'"':""","'":"'","/":"/"};return"string"!=typeof e?e:String(e).replace(/[&<>"'\/\\]/g,function(e){return t[e]})},i.appendMany=function(e,t){if("1.7"===o.fn.jquery.substr(0,3)){var n=o();o.map(t,function(e){n=n.add(e)}),t=n}e.append(t)},i.__cache={};var n=0;return i.GetUniqueElementId=function(e){var t=e.getAttribute("data-select2-id");return null==t&&(e.id?(t=e.id,e.setAttribute("data-select2-id",t)):(e.setAttribute("data-select2-id",++n),t=n.toString())),t},i.StoreData=function(e,t,n){var r=i.GetUniqueElementId(e);i.__cache[r]||(i.__cache[r]={}),i.__cache[r][t]=n},i.GetData=function(e,t){var n=i.GetUniqueElementId(e);return t?i.__cache[n]&&null!=i.__cache[n][t]?i.__cache[n][t]:o(e).data(t):i.__cache[n]},i.RemoveData=function(e){var t=i.GetUniqueElementId(e);null!=i.__cache[t]&&delete i.__cache[t],e.removeAttribute("data-select2-id")},i}),e.define("select2/results",["jquery","./utils"],function(h,f){function r(e,t,n){this.$element=e,this.data=n,this.options=t,r.__super__.constructor.call(this)}return f.Extend(r,f.Observable),r.prototype.render=function(){var e=h('
        ');return this.options.get("multiple")&&e.attr("aria-multiselectable","true"),this.$results=e},r.prototype.clear=function(){this.$results.empty()},r.prototype.displayMessage=function(e){var t=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var n=h(''),r=this.options.get("translations").get(e.message);n.append(t(r(e.args))),n[0].className+=" select2-results__message",this.$results.append(n)},r.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},r.prototype.append=function(e){this.hideLoading();var t=[];if(null!=e.results&&0!==e.results.length){e.results=this.sort(e.results);for(var n=0;n",{class:"select2-results__options select2-results__options--nested"});p.append(l),s.append(a),s.append(p)}else this.template(e,t);return f.StoreData(t,"data",e),t},r.prototype.bind=function(t,e){var l=this,n=t.id+"-results";this.$results.attr("id",n),t.on("results:all",function(e){l.clear(),l.append(e.data),t.isOpen()&&(l.setClasses(),l.highlightFirstItem())}),t.on("results:append",function(e){l.append(e.data),t.isOpen()&&l.setClasses()}),t.on("query",function(e){l.hideMessages(),l.showLoading(e)}),t.on("select",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("unselect",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("open",function(){l.$results.attr("aria-expanded","true"),l.$results.attr("aria-hidden","false"),l.setClasses(),l.ensureHighlightVisible()}),t.on("close",function(){l.$results.attr("aria-expanded","false"),l.$results.attr("aria-hidden","true"),l.$results.removeAttr("aria-activedescendant")}),t.on("results:toggle",function(){var e=l.getHighlightedResults();0!==e.length&&e.trigger("mouseup")}),t.on("results:select",function(){var e=l.getHighlightedResults();if(0!==e.length){var t=f.GetData(e[0],"data");"true"==e.attr("aria-selected")?l.trigger("close",{}):l.trigger("select",{data:t})}}),t.on("results:previous",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e);if(!(n<=0)){var r=n-1;0===e.length&&(r=0);var i=t.eq(r);i.trigger("mouseenter");var o=l.$results.offset().top,s=i.offset().top,a=l.$results.scrollTop()+(s-o);0===r?l.$results.scrollTop(0):s-o<0&&l.$results.scrollTop(a)}}),t.on("results:next",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e)+1;if(!(n>=t.length)){var r=t.eq(n);r.trigger("mouseenter");var i=l.$results.offset().top+l.$results.outerHeight(!1),o=r.offset().top+r.outerHeight(!1),s=l.$results.scrollTop()+o-i;0===n?l.$results.scrollTop(0):ithis.$results.outerHeight()||o<0)&&this.$results.scrollTop(i)}},r.prototype.template=function(e,t){var n=this.options.get("templateResult"),r=this.options.get("escapeMarkup"),i=n(e,t);null==i?t.style.display="none":"string"==typeof i?t.innerHTML=r(i):h(t).append(i)},r}),e.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),e.define("select2/selection/base",["jquery","../utils","../keys"],function(n,r,i){function o(e,t){this.$element=e,this.options=t,o.__super__.constructor.call(this)}return r.Extend(o,r.Observable),o.prototype.render=function(){var e=n('');return this._tabindex=0,null!=r.GetData(this.$element[0],"old-tabindex")?this._tabindex=r.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),e.attr("title",this.$element.attr("title")),e.attr("tabindex",this._tabindex),e.attr("aria-disabled","false"),this.$selection=e},o.prototype.bind=function(e,t){var n=this,r=e.id+"-results";this.container=e,this.$selection.on("focus",function(e){n.trigger("focus",e)}),this.$selection.on("blur",function(e){n._handleBlur(e)}),this.$selection.on("keydown",function(e){n.trigger("keypress",e),e.which===i.SPACE&&e.preventDefault()}),e.on("results:focus",function(e){n.$selection.attr("aria-activedescendant",e.data._resultId)}),e.on("selection:update",function(e){n.update(e.data)}),e.on("open",function(){n.$selection.attr("aria-expanded","true"),n.$selection.attr("aria-owns",r),n._attachCloseHandler(e)}),e.on("close",function(){n.$selection.attr("aria-expanded","false"),n.$selection.removeAttr("aria-activedescendant"),n.$selection.removeAttr("aria-owns"),n.$selection.trigger("focus"),n._detachCloseHandler(e)}),e.on("enable",function(){n.$selection.attr("tabindex",n._tabindex),n.$selection.attr("aria-disabled","false")}),e.on("disable",function(){n.$selection.attr("tabindex","-1"),n.$selection.attr("aria-disabled","true")})},o.prototype._handleBlur=function(e){var t=this;window.setTimeout(function(){document.activeElement==t.$selection[0]||n.contains(t.$selection[0],document.activeElement)||t.trigger("blur",e)},1)},o.prototype._attachCloseHandler=function(e){n(document.body).on("mousedown.select2."+e.id,function(e){var t=n(e.target).closest(".select2");n(".select2.select2-container--open").each(function(){this!=t[0]&&r.GetData(this,"element").select2("close")})})},o.prototype._detachCloseHandler=function(e){n(document.body).off("mousedown.select2."+e.id)},o.prototype.position=function(e,t){t.find(".selection").append(e)},o.prototype.destroy=function(){this._detachCloseHandler(this.container)},o.prototype.update=function(e){throw new Error("The `update` method must be defined in child classes.")},o.prototype.isEnabled=function(){return!this.isDisabled()},o.prototype.isDisabled=function(){return this.options.get("disabled")},o}),e.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(e,t,n,r){function i(){i.__super__.constructor.apply(this,arguments)}return n.Extend(i,t),i.prototype.render=function(){var e=i.__super__.render.call(this);return e.addClass("select2-selection--single"),e.html(''),e},i.prototype.bind=function(t,e){var n=this;i.__super__.bind.apply(this,arguments);var r=t.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",r).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",r),this.$selection.on("mousedown",function(e){1===e.which&&n.trigger("toggle",{originalEvent:e})}),this.$selection.on("focus",function(e){}),this.$selection.on("blur",function(e){}),t.on("focus",function(e){t.isOpen()||n.$selection.trigger("focus")})},i.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},i.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},i.prototype.selectionContainer=function(){return e("")},i.prototype.update=function(e){if(0!==e.length){var t=e[0],n=this.$selection.find(".select2-selection__rendered"),r=this.display(t,n);n.empty().append(r);var i=t.title||t.text;i?n.attr("title",i):n.removeAttr("title")}else this.clear()},i}),e.define("select2/selection/multiple",["jquery","./base","../utils"],function(i,e,l){function n(e,t){n.__super__.constructor.apply(this,arguments)}return l.Extend(n,e),n.prototype.render=function(){var e=n.__super__.render.call(this);return e.addClass("select2-selection--multiple"),e.html('
          '),e},n.prototype.bind=function(e,t){var r=this;n.__super__.bind.apply(this,arguments),this.$selection.on("click",function(e){r.trigger("toggle",{originalEvent:e})}),this.$selection.on("click",".select2-selection__choice__remove",function(e){if(!r.isDisabled()){var t=i(this).parent(),n=l.GetData(t[0],"data");r.trigger("unselect",{originalEvent:e,data:n})}})},n.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},n.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},n.prototype.selectionContainer=function(){return i('
        • ×
        • ')},n.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],n=0;n×');a.StoreData(r[0],"data",t),this.$selection.find(".select2-selection__rendered").prepend(r)}},e}),e.define("select2/selection/search",["jquery","../utils","../keys"],function(r,a,l){function e(e,t,n){e.call(this,t,n)}return e.prototype.render=function(e){var t=r('');this.$searchContainer=t,this.$search=t.find("input");var n=e.call(this);return this._transferTabIndex(),n},e.prototype.bind=function(e,t,n){var r=this,i=t.id+"-results";e.call(this,t,n),t.on("open",function(){r.$search.attr("aria-controls",i),r.$search.trigger("focus")}),t.on("close",function(){r.$search.val(""),r.$search.removeAttr("aria-controls"),r.$search.removeAttr("aria-activedescendant"),r.$search.trigger("focus")}),t.on("enable",function(){r.$search.prop("disabled",!1),r._transferTabIndex()}),t.on("disable",function(){r.$search.prop("disabled",!0)}),t.on("focus",function(e){r.$search.trigger("focus")}),t.on("results:focus",function(e){e.data._resultId?r.$search.attr("aria-activedescendant",e.data._resultId):r.$search.removeAttr("aria-activedescendant")}),this.$selection.on("focusin",".select2-search--inline",function(e){r.trigger("focus",e)}),this.$selection.on("focusout",".select2-search--inline",function(e){r._handleBlur(e)}),this.$selection.on("keydown",".select2-search--inline",function(e){if(e.stopPropagation(),r.trigger("keypress",e),r._keyUpPrevented=e.isDefaultPrevented(),e.which===l.BACKSPACE&&""===r.$search.val()){var t=r.$searchContainer.prev(".select2-selection__choice");if(0this.maximumInputLength?this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),e.define("select2/data/maximumSelectionLength",[],function(){function e(e,t,n){this.maximumSelectionLength=n.get("maximumSelectionLength"),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("select",function(){r._checkIfMaximumSelected()})},e.prototype.query=function(e,t,n){var r=this;this._checkIfMaximumSelected(function(){e.call(r,t,n)})},e.prototype._checkIfMaximumSelected=function(e,n){var r=this;this.current(function(e){var t=null!=e?e.length:0;0=r.maximumSelectionLength?r.trigger("results:message",{message:"maximumSelected",args:{maximum:r.maximumSelectionLength}}):n&&n()})},e}),e.define("select2/dropdown",["jquery","./utils"],function(t,e){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return e.Extend(n,e.Observable),n.prototype.render=function(){var e=t('');return e.attr("dir",this.options.get("dir")),this.$dropdown=e},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n}),e.define("select2/dropdown/search",["jquery","../utils"],function(o,e){function t(){}return t.prototype.render=function(e){var t=e.call(this),n=o('');return this.$searchContainer=n,this.$search=n.find("input"),t.prepend(n),t},t.prototype.bind=function(e,t,n){var r=this,i=t.id+"-results";e.call(this,t,n),this.$search.on("keydown",function(e){r.trigger("keypress",e),r._keyUpPrevented=e.isDefaultPrevented()}),this.$search.on("input",function(e){o(this).off("keyup")}),this.$search.on("keyup input",function(e){r.handleSearch(e)}),t.on("open",function(){r.$search.attr("tabindex",0),r.$search.attr("aria-controls",i),r.$search.trigger("focus"),window.setTimeout(function(){r.$search.trigger("focus")},0)}),t.on("close",function(){r.$search.attr("tabindex",-1),r.$search.removeAttr("aria-controls"),r.$search.removeAttr("aria-activedescendant"),r.$search.val(""),r.$search.trigger("blur")}),t.on("focus",function(){t.isOpen()||r.$search.trigger("focus")}),t.on("results:all",function(e){null!=e.query.term&&""!==e.query.term||(r.showSearch(e)?r.$searchContainer.removeClass("select2-search--hide"):r.$searchContainer.addClass("select2-search--hide"))}),t.on("results:focus",function(e){e.data._resultId?r.$search.attr("aria-activedescendant",e.data._resultId):r.$search.removeAttr("aria-activedescendant")})},t.prototype.handleSearch=function(e){if(!this._keyUpPrevented){var t=this.$search.val();this.trigger("query",{term:t})}this._keyUpPrevented=!1},t.prototype.showSearch=function(e,t){return!0},t}),e.define("select2/dropdown/hidePlaceholder",[],function(){function e(e,t,n,r){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n,r)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),r=t.length-1;0<=r;r--){var i=t[r];this.placeholder.id===i.id&&n.splice(r,1)}return n},e}),e.define("select2/dropdown/infiniteScroll",["jquery"],function(n){function e(e,t,n,r){this.lastParams={},e.call(this,t,n,r),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return e.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&(this.$results.append(this.$loadingMore),this.loadMoreIfNeeded())},e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("query",function(e){r.lastParams=e,r.loading=!0}),t.on("query:append",function(e){r.lastParams=e,r.loading=!0}),this.$results.on("scroll",this.loadMoreIfNeeded.bind(this))},e.prototype.loadMoreIfNeeded=function(){var e=n.contains(document.documentElement,this.$loadingMore[0]);if(!this.loading&&e){var t=this.$results.offset().top+this.$results.outerHeight(!1);this.$loadingMore.offset().top+this.$loadingMore.outerHeight(!1)<=t+50&&this.loadMore()}},e.prototype.loadMore=function(){this.loading=!0;var e=n.extend({},{page:1},this.lastParams);e.page++,this.trigger("query:append",e)},e.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},e.prototype.createLoadingMore=function(){var e=n('
        • '),t=this.options.get("translations").get("loadingMore");return e.html(t(this.lastParams)),e},e}),e.define("select2/dropdown/attachBody",["jquery","../utils"],function(f,a){function e(e,t,n){this.$dropdownParent=f(n.get("dropdownParent")||document.body),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("open",function(){r._showDropdown(),r._attachPositioningHandler(t),r._bindContainerResultHandlers(t)}),t.on("close",function(){r._hideDropdown(),r._detachPositioningHandler(t)}),this.$dropdownContainer.on("mousedown",function(e){e.stopPropagation()})},e.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},e.prototype.position=function(e,t,n){t.attr("class",n.attr("class")),t.removeClass("select2"),t.addClass("select2-container--open"),t.css({position:"absolute",top:-999999}),this.$container=n},e.prototype.render=function(e){var t=f(""),n=e.call(this);return t.append(n),this.$dropdownContainer=t},e.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},e.prototype._bindContainerResultHandlers=function(e,t){if(!this._containerResultsHandlersBound){var n=this;t.on("results:all",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:append",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:message",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("select",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("unselect",function(){n._positionDropdown(),n._resizeDropdown()}),this._containerResultsHandlersBound=!0}},e.prototype._attachPositioningHandler=function(e,t){var n=this,r="scroll.select2."+t.id,i="resize.select2."+t.id,o="orientationchange.select2."+t.id,s=this.$container.parents().filter(a.hasScroll);s.each(function(){a.StoreData(this,"select2-scroll-position",{x:f(this).scrollLeft(),y:f(this).scrollTop()})}),s.on(r,function(e){var t=a.GetData(this,"select2-scroll-position");f(this).scrollTop(t.y)}),f(window).on(r+" "+i+" "+o,function(e){n._positionDropdown(),n._resizeDropdown()})},e.prototype._detachPositioningHandler=function(e,t){var n="scroll.select2."+t.id,r="resize.select2."+t.id,i="orientationchange.select2."+t.id;this.$container.parents().filter(a.hasScroll).off(n),f(window).off(n+" "+r+" "+i)},e.prototype._positionDropdown=function(){var e=f(window),t=this.$dropdown.hasClass("select2-dropdown--above"),n=this.$dropdown.hasClass("select2-dropdown--below"),r=null,i=this.$container.offset();i.bottom=i.top+this.$container.outerHeight(!1);var o={height:this.$container.outerHeight(!1)};o.top=i.top,o.bottom=i.top+o.height;var s=this.$dropdown.outerHeight(!1),a=e.scrollTop(),l=e.scrollTop()+e.height(),c=ai.bottom+s,d={left:i.left,top:o.bottom},p=this.$dropdownParent;"static"===p.css("position")&&(p=p.offsetParent());var h={top:0,left:0};(f.contains(document.body,p[0])||p[0].isConnected)&&(h=p.offset()),d.top-=h.top,d.left-=h.left,t||n||(r="below"),u||!c||t?!c&&u&&t&&(r="below"):r="above",("above"==r||t&&"below"!==r)&&(d.top=o.top-h.top-s),null!=r&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+r),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+r)),this.$dropdownContainer.css(d)},e.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(e.minWidth=e.width,e.position="relative",e.width="auto"),this.$dropdown.css(e)},e.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},e}),e.define("select2/dropdown/minimumResultsForSearch",[],function(){function e(e,t,n,r){this.minimumResultsForSearch=n.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,r)}return e.prototype.showSearch=function(e,t){return!(function e(t){for(var n=0,r=0;r');return e.attr("dir",this.options.get("dir")),this.$container=e,this.$container.addClass("select2-container--"+this.options.get("theme")),u.StoreData(e[0],"element",this.$element),e},d}),e.define("jquery-mousewheel",["jquery"],function(e){return e}),e.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults","./select2/utils"],function(i,e,o,t,s){if(null==i.fn.select2){var a=["open","close","destroy"];i.fn.select2=function(t){if("object"==typeof(t=t||{}))return this.each(function(){var e=i.extend(!0,{},t);new o(i(this),e)}),this;if("string"!=typeof t)throw new Error("Invalid arguments for Select2: "+t);var n,r=Array.prototype.slice.call(arguments,1);return this.each(function(){var e=s.GetData(this,"select2");null==e&&window.console&&console.error&&console.error("The select2('"+t+"') method was called on an element that is not using Select2."),n=e[t].apply(e,r)}),-1get( 'display.exclude-doc-docx' ); - $allowed_informatieobjecttypen = (array) ContainerResolver::make()->get( 'display.allowed-informatieobjecttypen' ); + $exclude_doc_docx = (bool) ContainerResolver::make()->get( 'display.exclude-doc-docx' ); + $allowed_per_supplier = (array) ContainerResolver::make()->get( 'display.allowed-informatieobjecttypen' ); + $supplier_name = (string) $zaak->getValue( 'supplier', '' ); + $allowed_for_supplier = (array) ( $allowed_per_supplier[ $supplier_name ] ?? array() ); - if ( ! $exclude_doc_docx && empty( $allowed_informatieobjecttypen )) { + if ( ! $exclude_doc_docx && array() === $allowed_for_supplier ) { return $zaakinformatie_objecten; } return $zaakinformatie_objecten->filter( - function ( Zaakinformatieobject $zaakinformatie_object ) use ( $exclude_doc_docx, $allowed_informatieobjecttypen ) { + function ( Zaakinformatieobject $zaakinformatie_object ) use ( $exclude_doc_docx, $allowed_for_supplier ) { if ( ! $zaakinformatie_object->informatieobject instanceof Enkelvoudiginformatieobject) { return false; } @@ -270,7 +272,7 @@ function ( Zaakinformatieobject $zaakinformatie_object ) use ( $exclude_doc_docx return false; } - if ( 0 < count( $allowed_informatieobjecttypen ) && ! in_array( $informatieobject->informatieobjecttype, $allowed_informatieobjecttypen, true )) { + if ( 0 < count( $allowed_for_supplier ) && ! in_array( $informatieobject->informatieobjecttype, $allowed_for_supplier, true )) { return false; } diff --git a/src/CMB2/SelectOptgroupType.php b/src/CMB2/SelectOptgroupType.php index e573590..f537567 100644 --- a/src/CMB2/SelectOptgroupType.php +++ b/src/CMB2/SelectOptgroupType.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * CMB2 select field type that renders grouped options as elements. + * CMB2 multi-select field type that renders grouped options as elements. * * @package OWC_Mijn_Services * @author Yard | Digital Agency @@ -22,11 +22,12 @@ use CMB2_Type_Select; /** - * CMB2 select field type that renders grouped options as elements. + * CMB2 multi-select field type that renders grouped options as elements. * * Field options are expected as a `value => label` map, where any entry whose value is itself * an array is rendered as an (keyed by group label) containing its own `value => label` options. - * Flat and grouped entries may be mixed. + * Flat and grouped entries may be mixed. Renders as a `