diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index 4512c95a53..3af3879825 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -7,6 +7,7 @@ use App\Filament\Admin\Pages\ViewLogs; use App\Services\Helpers\PluginService; use Boquizo\FilamentLogViewer\FilamentLogViewerPlugin; +use CharrafiMed\GlobalSearchModal\GlobalSearchModalPlugin; use Filament\Actions\Action; use Filament\Facades\Filament; use Filament\Navigation\NavigationGroup; @@ -46,6 +47,7 @@ public function panel(Panel $panel): Panel ->navigationLabel(fn () => trans('admin/log.navigation.panel_logs')) ->navigationGroup(fn () => trans('admin/dashboard.advanced')) ->navigationIcon(TablerIcon::FileInfo), + GlobalSearchModalPlugin::make(), ]); /** @var PluginService $pluginService */ diff --git a/composer.json b/composer.json index dc0fdd27be..d59ecef501 100644 --- a/composer.json +++ b/composer.json @@ -11,6 +11,7 @@ "ext-zip": "*", "aws/aws-sdk-php": "^3.379", "calebporzio/sushi": "^2.5", + "charrafimed/global-search-modal": "^5.0", "dedoc/scramble": "^0.13", "filament/filament": "^5.6", "gboquizosanchez/filament-log-viewer": "^2.3", @@ -97,4 +98,4 @@ }, "minimum-stability": "stable", "prefer-stable": true -} \ No newline at end of file +} diff --git a/composer.lock b/composer.lock index c823deb586..1e57c04ef4 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "3ec4cdaa058200cf4a9390823585b105", + "content-hash": "f2f70dd47d698eeb7e9efb3c25e5a1d1", "packages": [ { "name": "aws/aws-crt-php", @@ -490,6 +490,53 @@ ], "time": "2024-02-09T16:56:22+00:00" }, + { + "name": "charrafimed/global-search-modal", + "version": "v5.0.0", + "source": { + "type": "git", + "url": "https://github.com/CharrafiMed/global-search-modal.git", + "reference": "dc437eab47acf6bccedda13e50f8c36e01421fdc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CharrafiMed/global-search-modal/zipball/dc437eab47acf6bccedda13e50f8c36e01421fdc", + "reference": "dc437eab47acf6bccedda13e50f8c36e01421fdc", + "shasum": "" + }, + "require": { + "filament/support": "^4.0||^5.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "CharrafiMed\\GlobalSearchModal\\GlobalSearchModalServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "CharrafiMed\\GlobalSearchModal\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "CharrafiMed", + "email": "charrafimohamed27@gmail.com" + } + ], + "description": "advanced global search modal", + "support": { + "issues": "https://github.com/CharrafiMed/global-search-modal/issues", + "source": "https://github.com/CharrafiMed/global-search-modal/tree/v5.0.0" + }, + "time": "2026-01-22T11:50:07+00:00" + }, { "name": "chillerlan/php-qrcode", "version": "5.0.5", diff --git a/public/css/charrafimed/global-search-modal/global-search-modal.css b/public/css/charrafimed/global-search-modal/global-search-modal.css new file mode 100644 index 0000000000..5e681166a5 --- /dev/null +++ b/public/css/charrafimed/global-search-modal/global-search-modal.css @@ -0,0 +1,1214 @@ +/*! tailwindcss v4.1.12 | MIT License | https://tailwindcss.com */ +@layer properties; +@layer theme, base, components, utilities; +@layer theme { + :root, :host { + --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", + "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", + "Courier New", monospace; + --color-violet-500: oklch(60.6% 0.25 292.717); + --color-violet-600: oklch(54.1% 0.281 293.009); + --color-slate-500: oklch(55.4% 0.046 257.417); + --color-gray-50: oklch(98.5% 0.002 247.839); + --color-gray-100: oklch(96.7% 0.003 264.542); + --color-gray-200: oklch(92.8% 0.006 264.531); + --color-gray-300: oklch(87.2% 0.01 258.338); + --color-gray-400: oklch(70.7% 0.022 261.325); + --color-gray-500: oklch(55.1% 0.027 264.364); + --color-gray-700: oklch(37.3% 0.034 259.733); + --color-gray-800: oklch(27.8% 0.033 256.848); + --color-gray-900: oklch(21% 0.034 264.665); + --color-gray-950: oklch(13% 0.028 261.692); + --color-black: #000; + --color-white: #fff; + --spacing: 0.25rem; + --text-sm: 0.875rem; + --text-sm--line-height: calc(1.25 / 0.875); + --text-base: 1rem; + --text-base--line-height: calc(1.5 / 1); + --font-weight-medium: 500; + --font-weight-semibold: 600; + --radius-lg: 0.5rem; + --radius-xl: 0.75rem; + --default-transition-duration: 150ms; + --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + --default-font-family: var(--font-sans); + --default-mono-font-family: var(--font-mono); + } +} +@layer base { + *, ::after, ::before, ::backdrop, ::file-selector-button { + box-sizing: border-box; + margin: 0; + padding: 0; + border: 0 solid; + } + html, :host { + line-height: 1.5; + -webkit-text-size-adjust: 100%; + tab-size: 4; + font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"); + font-feature-settings: var(--default-font-feature-settings, normal); + font-variation-settings: var(--default-font-variation-settings, normal); + -webkit-tap-highlight-color: transparent; + } + hr { + height: 0; + color: inherit; + border-top-width: 1px; + } + abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + } + h1, h2, h3, h4, h5, h6 { + font-size: inherit; + font-weight: inherit; + } + a { + color: inherit; + -webkit-text-decoration: inherit; + text-decoration: inherit; + } + b, strong { + font-weight: bolder; + } + code, kbd, samp, pre { + font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace); + font-feature-settings: var(--default-mono-font-feature-settings, normal); + font-variation-settings: var(--default-mono-font-variation-settings, normal); + font-size: 1em; + } + small { + font-size: 80%; + } + sub, sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; + } + sub { + bottom: -0.25em; + } + sup { + top: -0.5em; + } + table { + text-indent: 0; + border-color: inherit; + border-collapse: collapse; + } + :-moz-focusring { + outline: auto; + } + progress { + vertical-align: baseline; + } + summary { + display: list-item; + } + ol, ul, menu { + list-style: none; + } + img, svg, video, canvas, audio, iframe, embed, object { + display: block; + vertical-align: middle; + } + img, video { + max-width: 100%; + height: auto; + } + button, input, select, optgroup, textarea, ::file-selector-button { + font: inherit; + font-feature-settings: inherit; + font-variation-settings: inherit; + letter-spacing: inherit; + color: inherit; + border-radius: 0; + background-color: transparent; + opacity: 1; + } + :where(select:is([multiple], [size])) optgroup { + font-weight: bolder; + } + :where(select:is([multiple], [size])) optgroup option { + padding-inline-start: 20px; + } + ::file-selector-button { + margin-inline-end: 4px; + } + ::placeholder { + opacity: 1; + } + @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) { + ::placeholder { + color: currentcolor; + @supports (color: color-mix(in lab, red, red)) { + color: color-mix(in oklab, currentcolor 50%, transparent); + } + } + } + textarea { + resize: vertical; + } + ::-webkit-search-decoration { + -webkit-appearance: none; + } + ::-webkit-date-and-time-value { + min-height: 1lh; + text-align: inherit; + } + ::-webkit-datetime-edit { + display: inline-flex; + } + ::-webkit-datetime-edit-fields-wrapper { + padding: 0; + } + ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field { + padding-block: 0; + } + :-moz-ui-invalid { + box-shadow: none; + } + button, input:where([type="button"], [type="reset"], [type="submit"]), ::file-selector-button { + appearance: button; + } + ::-webkit-inner-spin-button, ::-webkit-outer-spin-button { + height: auto; + } + [hidden]:where(:not([hidden="until-found"])) { + display: none !important; + } +} +@layer utilities { + .relative { + position: relative; + } + .static { + position: static; + } + .top-0 { + top: calc(var(--spacing) * 0); + } + .z-10 { + z-index: 10; + } + .container { + width: 100%; + @media (width >= 40rem) { + max-width: 40rem; + } + @media (width >= 48rem) { + max-width: 48rem; + } + @media (width >= 64rem) { + max-width: 64rem; + } + @media (width >= 80rem) { + max-width: 80rem; + } + @media (width >= 96rem) { + max-width: 96rem; + } + } + .m-0 { + margin: calc(var(--spacing) * 0); + } + .my-1 { + margin-block: calc(var(--spacing) * 1); + } + .mt-1 { + margin-top: calc(var(--spacing) * 1); + } + .mr-1 { + margin-right: calc(var(--spacing) * 1); + } + .mr-2 { + margin-right: calc(var(--spacing) * 2); + } + .mr-auto { + margin-right: auto; + } + .ml-1 { + margin-left: calc(var(--spacing) * 1); + } + .ml-2 { + margin-left: calc(var(--spacing) * 2); + } + .block { + display: block; + } + .contents { + display: contents; + } + .flex { + display: flex; + } + .grid { + display: grid; + } + .hidden { + display: none; + } + .inline { + display: inline; + } + .table { + display: table; + } + .h-full { + height: 100%; + } + .w-full { + width: 100%; + } + .max-w-fit { + max-width: fit-content; + } + .min-w-\[1\.5rem\] { + min-width: 1.5rem; + } + .flex-1 { + flex: 1; + } + .border-collapse { + border-collapse: collapse; + } + .\[transform\:translateZ\(0\)\] { + transform: translateZ(0); + } + .transform { + transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,); + } + .cursor-pointer { + cursor: pointer; + } + .resize { + resize: both; + } + .scroll-mt-9 { + scroll-margin-top: calc(var(--spacing) * 9); + } + .list-none { + list-style-type: none; + } + .appearance-none { + appearance: none; + } + .grid-cols-\[auto_1fr\] { + grid-template-columns: auto 1fr; + } + .flex-col { + flex-direction: column; + } + .items-center { + align-items: center; + } + .justify-between { + justify-content: space-between; + } + .justify-center { + justify-content: center; + } + .justify-end { + justify-content: flex-end; + } + .justify-start { + justify-content: flex-start; + } + .gap-1 { + gap: calc(var(--spacing) * 1); + } + .gap-2 { + gap: calc(var(--spacing) * 2); + } + .overflow-x-hidden { + overflow-x: hidden; + } + .overflow-y-auto { + overflow-y: auto; + } + .rounded { + border-radius: 0.25rem; + } + .rounded-full { + border-radius: calc(infinity * 1px); + } + .rounded-lg { + border-radius: var(--radius-lg); + } + .rounded-xl { + border-radius: var(--radius-xl); + } + .border { + border-style: var(--tw-border-style); + border-width: 1px; + } + .border-b { + border-bottom-style: var(--tw-border-style); + border-bottom-width: 1px; + } + .border-none { + --tw-border-style: none; + border-style: none; + } + .border-gray-100 { + border-color: var(--color-gray-100); + } + .bg-\[--alpha\(var\(--color-gray-900\)_\/_5\%\)\] { + background-color: color-mix(in srgb, oklch(21% 0.034 264.665) 5%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-gray-900) 5%, transparent); + } + } + .bg-gray-100 { + background-color: var(--color-gray-100); + } + .bg-gray-200 { + background-color: var(--color-gray-200); + } + .bg-transparent { + background-color: transparent; + } + .bg-white { + background-color: var(--color-white); + } + .bg-white\/5 { + background-color: color-mix(in srgb, #fff 5%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-white) 5%, transparent); + } + } + .bg-white\/10 { + background-color: color-mix(in srgb, #fff 10%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-white) 10%, transparent); + } + } + .bg-none { + background-image: none; + } + .p-0 { + padding: calc(var(--spacing) * 0); + } + .p-1 { + padding: calc(var(--spacing) * 1); + } + .p-1\.5 { + padding: calc(var(--spacing) * 1.5); + } + .p-2 { + padding: calc(var(--spacing) * 2); + } + .p-3 { + padding: calc(var(--spacing) * 3); + } + .p-4 { + padding: calc(var(--spacing) * 4); + } + .px-1 { + padding-inline: calc(var(--spacing) * 1); + } + .px-3 { + padding-inline: calc(var(--spacing) * 3); + } + .px-4 { + padding-inline: calc(var(--spacing) * 4); + } + .py-2 { + padding-block: calc(var(--spacing) * 2); + } + .py-4 { + padding-block: calc(var(--spacing) * 4); + } + .py-16 { + padding-block: calc(var(--spacing) * 16); + } + .ps-4 { + padding-inline-start: calc(var(--spacing) * 4); + } + .pe-4 { + padding-inline-end: calc(var(--spacing) * 4); + } + .pt-0 { + padding-top: calc(var(--spacing) * 0); + } + .pt-0\.5 { + padding-top: calc(var(--spacing) * 0.5); + } + .pt-1 { + padding-top: calc(var(--spacing) * 1); + } + .pt-1\.5 { + padding-top: calc(var(--spacing) * 1.5); + } + .pt-4 { + padding-top: calc(var(--spacing) * 4); + } + .pr-2 { + padding-right: calc(var(--spacing) * 2); + } + .pb-1 { + padding-bottom: calc(var(--spacing) * 1); + } + .pb-1\.5 { + padding-bottom: calc(var(--spacing) * 1.5); + } + .pb-2 { + padding-bottom: calc(var(--spacing) * 2); + } + .text-center { + text-align: center; + } + .text-start { + text-align: start; + } + .text-base { + font-size: var(--text-base); + line-height: var(--tw-leading, var(--text-base--line-height)); + } + .text-sm { + font-size: var(--text-sm); + line-height: var(--tw-leading, var(--text-sm--line-height)); + } + .text-\[0\.9em\] { + font-size: 0.9em; + } + .font-medium { + --tw-font-weight: var(--font-weight-medium); + font-weight: var(--font-weight-medium); + } + .font-semibold { + --tw-font-weight: var(--font-weight-semibold); + font-weight: var(--font-weight-semibold); + } + .text-ellipsis { + text-overflow: ellipsis; + } + .whitespace-nowrap { + white-space: nowrap; + } + .text-gray-300 { + color: var(--color-gray-300); + } + .text-gray-300\/40 { + color: color-mix(in srgb, oklch(87.2% 0.01 258.338) 40%, transparent); + @supports (color: color-mix(in lab, red, red)) { + color: color-mix(in oklab, var(--color-gray-300) 40%, transparent); + } + } + .text-gray-400 { + color: var(--color-gray-400); + } + .text-gray-500 { + color: var(--color-gray-500); + } + .text-gray-700 { + color: var(--color-gray-700); + } + .text-gray-950 { + color: var(--color-gray-950); + } + .text-gray-950\/50 { + color: color-mix(in srgb, oklch(13% 0.028 261.692) 50%, transparent); + @supports (color: color-mix(in lab, red, red)) { + color: color-mix(in oklab, var(--color-gray-950) 50%, transparent); + } + } + .text-inherit { + color: inherit; + } + .text-slate-500 { + color: var(--color-slate-500); + } + .text-violet-600 { + color: var(--color-violet-600); + } + .capitalize { + text-transform: capitalize; + } + .underline { + text-decoration-line: underline; + } + .shadow-lg { + --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1)); + box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + } + .shadow-sm { + --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)); + box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + } + .ring-1 { + --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor); + box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + } + .ring-gray-950 { + --tw-ring-color: var(--color-gray-950); + } + .ring-gray-950\/10 { + --tw-ring-color: color-mix(in srgb, oklch(13% 0.028 261.692) 10%, transparent); + @supports (color: color-mix(in lab, red, red)) { + --tw-ring-color: color-mix(in oklab, var(--color-gray-950) 10%, transparent); + } + } + .outline { + outline-style: var(--tw-outline-style); + outline-width: 1px; + } + .blur { + --tw-blur: blur(8px); + filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); + } + .filter { + filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); + } + .transition { + transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events; + transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); + transition-duration: var(--tw-duration, var(--default-transition-duration)); + } + .transition-all { + transition-property: all; + transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); + transition-duration: var(--tw-duration, var(--default-transition-duration)); + } + .transition-colors { + transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to; + transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); + transition-duration: var(--tw-duration, var(--default-transition-duration)); + } + .duration-75 { + --tw-duration: 75ms; + transition-duration: 75ms; + } + .duration-300 { + --tw-duration: 300ms; + transition-duration: 300ms; + } + .outline-none { + --tw-outline-style: none; + outline-style: none; + } + .placeholder\:text-gray-400 { + &::placeholder { + color: var(--color-gray-400); + } + } + .focus-within\:bg-\[--alpha\(var\(--color-gray-900\)_\/_8\%\)\] { + &:focus-within { + background-color: color-mix(in srgb, oklch(21% 0.034 264.665) 8%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-gray-900) 8%, transparent); + } + } + } + .hover\:bg-\[--alpha\(var\(--color-gray-900\)_\/_8\%\)\] { + &:hover { + @media (hover: hover) { + background-color: color-mix(in srgb, oklch(21% 0.034 264.665) 8%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-gray-900) 8%, transparent); + } + } + } + } + .hover\:bg-black\/5 { + &:hover { + @media (hover: hover) { + background-color: color-mix(in srgb, #000 5%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-black) 5%, transparent); + } + } + } + } + .hover\:bg-gray-100\/90 { + &:hover { + @media (hover: hover) { + background-color: color-mix(in srgb, oklch(96.7% 0.003 264.542) 90%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-gray-100) 90%, transparent); + } + } + } + } + .hover\:bg-gray-800\/5 { + &:hover { + @media (hover: hover) { + background-color: color-mix(in srgb, oklch(27.8% 0.033 256.848) 5%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-gray-800) 5%, transparent); + } + } + } + } + .hover\:underline { + &:hover { + @media (hover: hover) { + text-decoration-line: underline; + } + } + } + .focus\:border-gray-400 { + &:focus { + border-color: var(--color-gray-400); + } + } + .focus\:bg-gray-100 { + &:focus { + background-color: var(--color-gray-100); + } + } + .focus\:ring-0 { + &:focus { + --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor); + box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + } + } + .focus-visible\:outline-none { + &:focus-visible { + --tw-outline-style: none; + outline-style: none; + } + } + .disabled\:text-gray-500 { + &:disabled { + color: var(--color-gray-500); + } + } + .disabled\:\[-webkit-text-fill-color\:var\(--color-gray-500\)\] { + &:disabled { + -webkit-text-fill-color: var(--color-gray-500); + } + } + .disabled\:placeholder\:\[-webkit-text-fill-color\:var\(--color-gray-400\)\] { + &:disabled { + &::placeholder { + -webkit-text-fill-color: var(--color-gray-400); + } + } + } + .sm\:text-sm { + @media (width >= 40rem) { + font-size: var(--text-sm); + line-height: var(--tw-leading, var(--text-sm--line-height)); + } + } + .sm\:leading-6 { + @media (width >= 40rem) { + --tw-leading: calc(var(--spacing) * 6); + line-height: calc(var(--spacing) * 6); + } + } + .ltr\:mr-1 { + &:where(:dir(ltr), [dir="ltr"], [dir="ltr"] *) { + margin-right: calc(var(--spacing) * 1); + } + } + .rtl\:mr-2 { + &:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) { + margin-right: calc(var(--spacing) * 2); + } + } + .rtl\:ml-1 { + &:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) { + margin-left: calc(var(--spacing) * 1); + } + } + .rtl\:pl-2 { + &:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) { + padding-left: calc(var(--spacing) * 2); + } + } + .dark\:border-gray-700 { + &:where(.dark, .dark *) { + border-color: var(--color-gray-700); + } + } + .dark\:bg-\[--alpha\(white_\/_3\%\)\] { + &:where(.dark, .dark *) { + background-color: color-mix(in oklab, white 3%, transparent); + } + } + .dark\:bg-white\/5 { + &:where(.dark, .dark *) { + background-color: color-mix(in srgb, #fff 5%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-white) 5%, transparent); + } + } + } + .dark\:bg-white\/10 { + &:where(.dark, .dark *) { + background-color: color-mix(in srgb, #fff 10%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-white) 10%, transparent); + } + } + } + .dark\:text-gray-200 { + &:where(.dark, .dark *) { + color: var(--color-gray-200); + } + } + .dark\:text-gray-400 { + &:where(.dark, .dark *) { + color: var(--color-gray-400); + } + } + .dark\:text-gray-700 { + &:where(.dark, .dark *) { + color: var(--color-gray-700); + } + } + .dark\:text-violet-500 { + &:where(.dark, .dark *) { + color: var(--color-violet-500); + } + } + .dark\:text-white { + &:where(.dark, .dark *) { + color: var(--color-white); + } + } + .dark\:text-white\/30 { + &:where(.dark, .dark *) { + color: color-mix(in srgb, #fff 30%, transparent); + @supports (color: color-mix(in lab, red, red)) { + color: color-mix(in oklab, var(--color-white) 30%, transparent); + } + } + } + .dark\:ring-white\/20 { + &:where(.dark, .dark *) { + --tw-ring-color: color-mix(in srgb, #fff 20%, transparent); + @supports (color: color-mix(in lab, red, red)) { + --tw-ring-color: color-mix(in oklab, var(--color-white) 20%, transparent); + } + } + } + .dark\:placeholder\:text-gray-500 { + &:where(.dark, .dark *) { + &::placeholder { + color: var(--color-gray-500); + } + } + } + .focus-within\:dark\:bg-\[--alpha\(white_\/_8\%\)\] { + &:focus-within { + &:where(.dark, .dark *) { + background-color: color-mix(in oklab, white 8%, transparent); + } + } + } + .dark\:hover\:bg-\[--alpha\(white_\/_10\%\)\] { + &:where(.dark, .dark *) { + &:hover { + @media (hover: hover) { + background-color: color-mix(in oklab, white 10%, transparent); + } + } + } + } + .dark\:hover\:bg-white\/5 { + &:where(.dark, .dark *) { + &:hover { + @media (hover: hover) { + background-color: color-mix(in srgb, #fff 5%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-white) 5%, transparent); + } + } + } + } + } + .dark\:hover\:bg-white\/10 { + &:where(.dark, .dark *) { + &:hover { + @media (hover: hover) { + background-color: color-mix(in srgb, #fff 10%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-white) 10%, transparent); + } + } + } + } + } + .dark\:focus\:border-white\/30 { + &:where(.dark, .dark *) { + &:focus { + border-color: color-mix(in srgb, #fff 30%, transparent); + @supports (color: color-mix(in lab, red, red)) { + border-color: color-mix(in oklab, var(--color-white) 30%, transparent); + } + } + } + } + .dark\:focus\:bg-white\/10 { + &:where(.dark, .dark *) { + &:focus { + background-color: color-mix(in srgb, #fff 10%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-white) 10%, transparent); + } + } + } + } + .dark\:disabled\:text-gray-400 { + &:where(.dark, .dark *) { + &:disabled { + color: var(--color-gray-400); + } + } + } + .dark\:disabled\:\[-webkit-text-fill-color\:var\(--color-gray-400\)\] { + &:where(.dark, .dark *) { + &:disabled { + -webkit-text-fill-color: var(--color-gray-400); + } + } + } + .dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:var\(--color-gray-500\)\] { + &:where(.dark, .dark *) { + &:disabled { + &::placeholder { + -webkit-text-fill-color: var(--color-gray-500); + } + } + } + } + .\[\&_\.fi-modal-close-btn\]\:\!end-4 { + & .fi-modal-close-btn { + inset-inline-end: calc(var(--spacing) * 4) !important; + } + } + .\[\&_\.fi-modal-close-btn\]\:\!top-4 { + & .fi-modal-close-btn { + top: calc(var(--spacing) * 4) !important; + } + } + .\[\&_\.fi-modal-close-btn\]\:size-6 { + & .fi-modal-close-btn { + width: calc(var(--spacing) * 6); + height: calc(var(--spacing) * 6); + } + } + .\[\&_\.fi-modal-close-btn\]\:\!p-0\.5 { + & .fi-modal-close-btn { + padding: calc(var(--spacing) * 0.5) !important; + } + } + .\[\&_\.fi-modal-content\]\:\!px-4 { + & .fi-modal-content { + padding-inline: calc(var(--spacing) * 4) !important; + } + } + .\[\&_\.fi-modal-content\]\:\!py-3 { + & .fi-modal-content { + padding-block: calc(var(--spacing) * 3) !important; + } + } + .\[\&_\.fi-modal-header\]\:\!px-4 { + & .fi-modal-header { + padding-inline: calc(var(--spacing) * 4) !important; + } + } + .\[\&_\.fi-modal-header\]\:\!py-4 { + & .fi-modal-header { + padding-block: calc(var(--spacing) * 4) !important; + } + } + .\[\&_\.fi-modal-slide-over_\.results-container\]\:\!max-h-\[80vh\] { + & .fi-modal-slide-over .results-container { + max-height: 80vh !important; + } + } + .\[\&_\.fi-modal-slide-over_\.results-container\]\:\!min-h-full { + & .fi-modal-slide-over .results-container { + min-height: 100% !important; + } + } + .\[\&_\.fi-modal-window-ctn\]\:\!grid-rows-\[0\.6fr_auto_1fr\] { + & .fi-modal-window-ctn { + grid-template-rows: 0.6fr auto 1fr !important; + } + } + .\[\&_\.fi-modal-window-ctn\]\:sm\:\!grid-rows-\[0\.5fr_auto_3fr\] { + & .fi-modal-window-ctn { + @media (width >= 40rem) { + grid-template-rows: 0.5fr auto 3fr !important; + } + } + } + .\[\&_\.fi-width-screen_\.results-container\]\:\!max-h-\[80vh\] { + & .fi-width-screen .results-container { + max-height: 80vh !important; + } + } + .\[\&_\.results-container\]\:\[scrollbar-color\:rgba\(156_\,_163_\,_175_\,_0\.7\)_transparent\] { + & .results-container { + scrollbar-color: rgba(156 , 163 , 175 , 0.7) transparent; + } + } + .\[\&_\.results-container\]\:\[scrollbar-width\:thin\] { + & .results-container { + scrollbar-width: thin; + } + } + .\[\&_\.results-container\:\:-webkit-scrollbar\]\:w-\[6px\] { + & .results-container::-webkit-scrollbar { + width: 6px; + } + } + .\[\&_\.results-container\:\:-webkit-scrollbar-thumb\]\:rounded-full { + & .results-container::-webkit-scrollbar-thumb { + border-radius: calc(infinity * 1px); + } + } + .\[\&_\.results-container\:\:-webkit-scrollbar-thumb\]\:bg-gray-400\/70 { + & .results-container::-webkit-scrollbar-thumb { + background-color: color-mix(in srgb, oklch(70.7% 0.022 261.325) 70%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-gray-400) 70%, transparent); + } + } + } + .dark\:\[\&_\.results-container\:\:-webkit-scrollbar-thumb\]\:bg-gray-500\/70 { + &:where(.dark, .dark *) { + & .results-container::-webkit-scrollbar-thumb { + background-color: color-mix(in srgb, oklch(55.1% 0.027 264.364) 70%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-gray-500) 70%, transparent); + } + } + } + } + .\[\&_\.results-container\:\:-webkit-scrollbar-thumb\:hover\]\:bg-gray-500\/90 { + & .results-container::-webkit-scrollbar-thumb:hover { + background-color: color-mix(in srgb, oklch(55.1% 0.027 264.364) 90%, transparent); + @supports (color: color-mix(in lab, red, red)) { + background-color: color-mix(in oklab, var(--color-gray-500) 90%, transparent); + } + } + } + .\[\&_\.results-container\:\:-webkit-scrollbar-track\]\:bg-transparent { + & .results-container::-webkit-scrollbar-track { + background-color: transparent; + } + } + .\[\&_\:not\(\.fi-modal-slide-over\)\:not\(\.fi-width-screen\)_\.fi-modal-window-ctn\]\:\!pt-16 { + & :not(.fi-modal-slide-over):not(.fi-width-screen) .fi-modal-window-ctn { + padding-top: calc(var(--spacing) * 16) !important; + } + } + .\[\&_\:not\(\.fi-modal-slide-over\)\:not\(\.fi-width-screen\)_\.results-container\]\:max-h-\[67vh\] { + & :not(.fi-modal-slide-over):not(.fi-width-screen) .results-container { + max-height: 67vh; + } + } +} +@property --tw-rotate-x { + syntax: "*"; + inherits: false; +} +@property --tw-rotate-y { + syntax: "*"; + inherits: false; +} +@property --tw-rotate-z { + syntax: "*"; + inherits: false; +} +@property --tw-skew-x { + syntax: "*"; + inherits: false; +} +@property --tw-skew-y { + syntax: "*"; + inherits: false; +} +@property --tw-border-style { + syntax: "*"; + inherits: false; + initial-value: solid; +} +@property --tw-font-weight { + syntax: "*"; + inherits: false; +} +@property --tw-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-shadow-color { + syntax: "*"; + inherits: false; +} +@property --tw-shadow-alpha { + syntax: ""; + inherits: false; + initial-value: 100%; +} +@property --tw-inset-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-inset-shadow-color { + syntax: "*"; + inherits: false; +} +@property --tw-inset-shadow-alpha { + syntax: ""; + inherits: false; + initial-value: 100%; +} +@property --tw-ring-color { + syntax: "*"; + inherits: false; +} +@property --tw-ring-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-inset-ring-color { + syntax: "*"; + inherits: false; +} +@property --tw-inset-ring-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-ring-inset { + syntax: "*"; + inherits: false; +} +@property --tw-ring-offset-width { + syntax: ""; + inherits: false; + initial-value: 0px; +} +@property --tw-ring-offset-color { + syntax: "*"; + inherits: false; + initial-value: #fff; +} +@property --tw-ring-offset-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-outline-style { + syntax: "*"; + inherits: false; + initial-value: solid; +} +@property --tw-blur { + syntax: "*"; + inherits: false; +} +@property --tw-brightness { + syntax: "*"; + inherits: false; +} +@property --tw-contrast { + syntax: "*"; + inherits: false; +} +@property --tw-grayscale { + syntax: "*"; + inherits: false; +} +@property --tw-hue-rotate { + syntax: "*"; + inherits: false; +} +@property --tw-invert { + syntax: "*"; + inherits: false; +} +@property --tw-opacity { + syntax: "*"; + inherits: false; +} +@property --tw-saturate { + syntax: "*"; + inherits: false; +} +@property --tw-sepia { + syntax: "*"; + inherits: false; +} +@property --tw-drop-shadow { + syntax: "*"; + inherits: false; +} +@property --tw-drop-shadow-color { + syntax: "*"; + inherits: false; +} +@property --tw-drop-shadow-alpha { + syntax: ""; + inherits: false; + initial-value: 100%; +} +@property --tw-drop-shadow-size { + syntax: "*"; + inherits: false; +} +@property --tw-duration { + syntax: "*"; + inherits: false; +} +@property --tw-leading { + syntax: "*"; + inherits: false; +} +@layer properties { + @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) { + *, ::before, ::after, ::backdrop { + --tw-rotate-x: initial; + --tw-rotate-y: initial; + --tw-rotate-z: initial; + --tw-skew-x: initial; + --tw-skew-y: initial; + --tw-border-style: solid; + --tw-font-weight: initial; + --tw-shadow: 0 0 #0000; + --tw-shadow-color: initial; + --tw-shadow-alpha: 100%; + --tw-inset-shadow: 0 0 #0000; + --tw-inset-shadow-color: initial; + --tw-inset-shadow-alpha: 100%; + --tw-ring-color: initial; + --tw-ring-shadow: 0 0 #0000; + --tw-inset-ring-color: initial; + --tw-inset-ring-shadow: 0 0 #0000; + --tw-ring-inset: initial; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-offset-shadow: 0 0 #0000; + --tw-outline-style: solid; + --tw-blur: initial; + --tw-brightness: initial; + --tw-contrast: initial; + --tw-grayscale: initial; + --tw-hue-rotate: initial; + --tw-invert: initial; + --tw-opacity: initial; + --tw-saturate: initial; + --tw-sepia: initial; + --tw-drop-shadow: initial; + --tw-drop-shadow-color: initial; + --tw-drop-shadow-alpha: 100%; + --tw-drop-shadow-size: initial; + --tw-duration: initial; + --tw-leading: initial; + } + } +} diff --git a/public/js/charrafimed/global-search-modal/components/global-search-modal-observer.js b/public/js/charrafimed/global-search-modal/components/global-search-modal-observer.js new file mode 100644 index 0000000000..327028d669 --- /dev/null +++ b/public/js/charrafimed/global-search-modal/components/global-search-modal-observer.js @@ -0,0 +1,66 @@ +// resources/js/observer.js +function observer() { + return { + observer: null, + modalOpen: false, + init: function() { + const nodeSelector = ".fi-global-search-field"; + const node = document.querySelector(nodeSelector); + if (node) { + node.disabled = true; + this.checkForTargetClass(node); + this.listenForModalClose(node); + } + }, + checkForTargetClass: function(node) { + const inputElement = node.querySelector("input[type=search]"); + if (inputElement) { + ["focus", "click", "keydown", "input"].forEach((eventType) => { + inputElement.addEventListener(eventType, (event) => { + event.preventDefault(); + event.stopPropagation(); + this.handleInputInteraction(event, node); + }, true); + }); + inputElement.addEventListener("keypress", (event) => { + event.preventDefault(); + event.stopPropagation(); + }, true); + inputElement.setAttribute("readonly", true); + inputElement.setAttribute("tabindex", "-1"); + } + }, + handleInputInteraction: function(event, node) { + if (this.modalOpen) { + return; + } + if (event.target) { + event.target.blur(); + } + this.openModal(node); + }, + openModal: function(node) { + this.modalOpen = true; + node.disabled = true; + window.dispatchEvent(new CustomEvent("open-global-search-modal", { + detail: { id: "global-search-modal::plugin" }, + bubbles: true + })); + }, + listenForModalClose: function(node) { + window.addEventListener("modal-closed", (event) => { + if (event.detail?.id === "global-search-modal::plugin") { + this.modalOpen = false; + const inputElement = node.querySelector("input[type=search]"); + inputElement.disabled = false; + inputElement.setAttribute("readonly", false); + inputElement.setAttribute("tabindex", 0); + } + }); + } + }; +} +export { + observer as default +}; +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vcmVzb3VyY2VzL2pzL29ic2VydmVyLmpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvYnNlcnZlcigpIHtcbiAgcmV0dXJuIHtcbiAgICBvYnNlcnZlcjogbnVsbCxcbiAgICBtb2RhbE9wZW46IGZhbHNlLFxuXG4gICAgaW5pdDogZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgbm9kZVNlbGVjdG9yID0gXCIuZmktZ2xvYmFsLXNlYXJjaC1maWVsZFwiO1xuICAgICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iobm9kZVNlbGVjdG9yKTtcblxuICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgbm9kZS5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2hlY2tGb3JUYXJnZXRDbGFzcyhub2RlKTtcbiAgICAgICAgdGhpcy5saXN0ZW5Gb3JNb2RhbENsb3NlKG5vZGUpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBjaGVja0ZvclRhcmdldENsYXNzOiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgY29uc3QgaW5wdXRFbGVtZW50ID0gbm9kZS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbdHlwZT1zZWFyY2hdXCIpO1xuXG4gICAgICBpZiAoaW5wdXRFbGVtZW50KSB7XG4gICAgICAgIC8vIEV2ZW50cyB0aGF0IHNob3VsZCBvcGVuIHRoZSBtb2RhbCAoZGlkIG1vcmUgdGhhbiBmb2N1cyBhbmQgY2xpY2sgdG8gaGFuZGxlIGVkZ2UgY2FzZXMpXG4gICAgICAgIFtcImZvY3VzXCIsIFwiY2xpY2tcIiwgXCJrZXlkb3duXCIsIFwiaW5wdXRcIl0uZm9yRWFjaCgoZXZlbnRUeXBlKSA9PiB7XG4gICAgICAgICAgaW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlSW5wdXRJbnRlcmFjdGlvbihldmVudCwgbm9kZSk7XG4gICAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGZvciBQcmV2ZW50IGFueSB0eXBpbmcgb3IgaW50ZXJhY3Rpb25cbiAgICAgICAgaW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXByZXNzJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfSwgdHJ1ZSk7XG5cbiAgICAgICAgaW5wdXRFbGVtZW50LnNldEF0dHJpYnV0ZSgncmVhZG9ubHknLCB0cnVlKTtcbiAgICAgICAgaW5wdXRFbGVtZW50LnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgaGFuZGxlSW5wdXRJbnRlcmFjdGlvbjogZnVuY3Rpb24gKGV2ZW50LCBub2RlKSB7XG4gICAgICAvLyBEb24ndCBvcGVuIG1vZGFsIGlmIGl0J3MgYWxyZWFhZHkgb3BlblxuICAgICAgaWYgKHRoaXMubW9kYWxPcGVuKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gSW1tZWRpYXRlbHkgYmx1ciB0aGUgaW5wdXQgdG8gcHJldmVudCBmb2N1c1xuICAgICAgaWYgKGV2ZW50LnRhcmdldCkge1xuICAgICAgICBldmVudC50YXJnZXQuYmx1cigpO1xuICAgICAgfVxuXG4gICAgICAvLyBPcGVuIHRoZSBtb2RhbFxuICAgICAgdGhpcy5vcGVuTW9kYWwobm9kZSk7XG4gICAgfSxcblxuICAgIG9wZW5Nb2RhbDogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHRoaXMubW9kYWxPcGVuID0gdHJ1ZTtcbiAgICAgIG5vZGUuZGlzYWJsZWQgPSB0cnVlO1xuXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ29wZW4tZ2xvYmFsLXNlYXJjaC1tb2RhbCcsIHtcbiAgICAgICAgZGV0YWlsOiB7IGlkOiAnZ2xvYmFsLXNlYXJjaC1tb2RhbDo6cGx1Z2luJyB9LFxuICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgfSkpO1xuICAgIH0sXG5cbiAgICBsaXN0ZW5Gb3JNb2RhbENsb3NlOiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vZGFsLWNsb3NlZCcsIChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQuZGV0YWlsPy5pZCA9PT0gJ2dsb2JhbC1zZWFyY2gtbW9kYWw6OnBsdWdpbicpIHtcbiAgICAgICAgICB0aGlzLm1vZGFsT3BlbiA9IGZhbHNlO1xuICAgICAgICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IG5vZGUucXVlcnlTZWxlY3RvcihcImlucHV0W3R5cGU9c2VhcmNoXVwiKTtcbiAgICAgICAgICBpbnB1dEVsZW1lbnQuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICBpbnB1dEVsZW1lbnQuc2V0QXR0cmlidXRlKCdyZWFkb25seScsIGZhbHNlKTtcbiAgICAgICAgICBpbnB1dEVsZW1lbnQuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsIDApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG59Il0sCiAgIm1hcHBpbmdzIjogIjtBQUFlLFNBQVIsV0FBNEI7QUFDakMsU0FBTztBQUFBLElBQ0wsVUFBVTtBQUFBLElBQ1YsV0FBVztBQUFBLElBRVgsTUFBTSxXQUFZO0FBQ2hCLFlBQU0sZUFBZTtBQUNyQixZQUFNLE9BQU8sU0FBUyxjQUFjLFlBQVk7QUFFaEQsVUFBSSxNQUFNO0FBQ1IsYUFBSyxXQUFXO0FBQ2hCLGFBQUssb0JBQW9CLElBQUk7QUFDN0IsYUFBSyxvQkFBb0IsSUFBSTtBQUFBLE1BQy9CO0FBQUEsSUFDRjtBQUFBLElBRUEscUJBQXFCLFNBQVUsTUFBTTtBQUNuQyxZQUFNLGVBQWUsS0FBSyxjQUFjLG9CQUFvQjtBQUU1RCxVQUFJLGNBQWM7QUFFaEIsU0FBQyxTQUFTLFNBQVMsV0FBVyxPQUFPLEVBQUUsUUFBUSxDQUFDLGNBQWM7QUFDNUQsdUJBQWEsaUJBQWlCLFdBQVcsQ0FBQyxVQUFVO0FBQ2xELGtCQUFNLGVBQWU7QUFDckIsa0JBQU0sZ0JBQWdCO0FBQ3RCLGlCQUFLLHVCQUF1QixPQUFPLElBQUk7QUFBQSxVQUN6QyxHQUFHLElBQUk7QUFBQSxRQUNULENBQUM7QUFHRCxxQkFBYSxpQkFBaUIsWUFBWSxDQUFDLFVBQVU7QUFDbkQsZ0JBQU0sZUFBZTtBQUNyQixnQkFBTSxnQkFBZ0I7QUFBQSxRQUN4QixHQUFHLElBQUk7QUFFUCxxQkFBYSxhQUFhLFlBQVksSUFBSTtBQUMxQyxxQkFBYSxhQUFhLFlBQVksSUFBSTtBQUFBLE1BQzVDO0FBQUEsSUFDRjtBQUFBLElBRUEsd0JBQXdCLFNBQVUsT0FBTyxNQUFNO0FBRTdDLFVBQUksS0FBSyxXQUFXO0FBQ2xCO0FBQUEsTUFDRjtBQUdBLFVBQUksTUFBTSxRQUFRO0FBQ2hCLGNBQU0sT0FBTyxLQUFLO0FBQUEsTUFDcEI7QUFHQSxXQUFLLFVBQVUsSUFBSTtBQUFBLElBQ3JCO0FBQUEsSUFFQSxXQUFXLFNBQVUsTUFBTTtBQUN6QixXQUFLLFlBQVk7QUFDakIsV0FBSyxXQUFXO0FBRWhCLGFBQU8sY0FBYyxJQUFJLFlBQVksNEJBQTRCO0FBQUEsUUFDL0QsUUFBUSxFQUFFLElBQUksOEJBQThCO0FBQUEsUUFDNUMsU0FBUztBQUFBLE1BQ1gsQ0FBQyxDQUFDO0FBQUEsSUFDSjtBQUFBLElBRUEscUJBQXFCLFNBQVUsTUFBTTtBQUNuQyxhQUFPLGlCQUFpQixnQkFBZ0IsQ0FBQyxVQUFVO0FBQ2pELFlBQUksTUFBTSxRQUFRLE9BQU8sK0JBQStCO0FBQ3RELGVBQUssWUFBWTtBQUNqQixnQkFBTSxlQUFlLEtBQUssY0FBYyxvQkFBb0I7QUFDNUQsdUJBQWEsV0FBVztBQUN4Qix1QkFBYSxhQUFhLFlBQVksS0FBSztBQUMzQyx1QkFBYSxhQUFhLFlBQVksQ0FBQztBQUFBLFFBQ3pDO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K diff --git a/public/js/charrafimed/global-search-modal/components/global-search-modal-search.js b/public/js/charrafimed/global-search-modal/components/global-search-modal-search.js new file mode 100644 index 0000000000..53ad58718d --- /dev/null +++ b/public/js/charrafimed/global-search-modal/components/global-search-modal-search.js @@ -0,0 +1,73 @@ +// resources/js/search.js +function searchComponent({ + recentSearchesKey, + favoriteSearchesKey, + maxItemsAllowed, + retainRecentIfFavorite +}) { + return { + search_history: [], + favorite_items: [], + init() { + this.search_history = this.getLocalStorage(recentSearchesKey); + this.favorite_items = this.getLocalStorage(favoriteSearchesKey); + this.$watch( + "search_history", + (val) => this.setLocalStorage(recentSearchesKey, val) + ); + this.$watch( + "favorite_items", + (val) => this.setLocalStorage(favoriteSearchesKey, val) + ); + }, + getLocalStorage(key) { + return JSON.parse(localStorage.getItem(key)) || []; + }, + setLocalStorage(key, value) { + localStorage.setItem(key, JSON.stringify(value)); + }, + updateList(list, newItem) { + return [ + newItem, + ...list.filter((el) => !(el.title === newItem.title && el.group === newItem.group)) + ].slice(0, maxItemsAllowed); + }, + addToSearchHistory(searchItem, group, url) { + const searchItemObject = { title: searchItem, group, url }; + this.search_history = this.updateList( + this.search_history, + searchItemObject + ); + }, + deleteFromHistory(searchItem, group) { + this.search_history = this.search_history.filter( + (el) => !(el.title === searchItem && el.group === group) + ); + }, + deleteAllHistory() { + this.search_history = []; + }, + addToFavorites(favItem, group, url) { + if (!retainRecentIfFavorite) { + this.deleteFromHistory(favItem, group); + } + const favItemObject = { title: favItem, group, url }; + this.favorite_items = this.updateList( + this.favorite_items, + favItemObject + ); + }, + deleteFromFavorites(favItem, group) { + this.favorite_items = this.favorite_items.filter( + (el) => !(el.title === favItem && el.group === group) + ); + }, + deleteAllFavorites() { + this.favorite_items = []; + } + }; +} +export { + searchComponent as default +}; +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vcmVzb3VyY2VzL2pzL3NlYXJjaC5qcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2VhcmNoQ29tcG9uZW50KHtcclxuICAgIHJlY2VudFNlYXJjaGVzS2V5LFxyXG4gICAgZmF2b3JpdGVTZWFyY2hlc0tleSxcclxuICAgIG1heEl0ZW1zQWxsb3dlZCxcclxuICAgIHJldGFpblJlY2VudElmRmF2b3JpdGVcclxufSkge1xyXG4gICAgcmV0dXJuIHtcclxuXHJcbiAgICAgICAgc2VhcmNoX2hpc3Rvcnk6IFtdLFxyXG4gICAgICAgIGZhdm9yaXRlX2l0ZW1zOiBbXSxcclxuXHJcbiAgICAgICAgaW5pdCgpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hfaGlzdG9yeSA9IHRoaXMuZ2V0TG9jYWxTdG9yYWdlKHJlY2VudFNlYXJjaGVzS2V5KTtcclxuICAgICAgICAgICAgdGhpcy5mYXZvcml0ZV9pdGVtcyA9IHRoaXMuZ2V0TG9jYWxTdG9yYWdlKGZhdm9yaXRlU2VhcmNoZXNLZXkpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy4kd2F0Y2goXCJzZWFyY2hfaGlzdG9yeVwiLCAodmFsKSA9PlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRMb2NhbFN0b3JhZ2UocmVjZW50U2VhcmNoZXNLZXksIHZhbClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy4kd2F0Y2goXCJmYXZvcml0ZV9pdGVtc1wiLCAodmFsKSA9PlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRMb2NhbFN0b3JhZ2UoZmF2b3JpdGVTZWFyY2hlc0tleSwgdmFsKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGdldExvY2FsU3RvcmFnZShrZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSkgfHwgW107XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgc2V0TG9jYWxTdG9yYWdlKGtleSwgdmFsdWUpIHtcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHVwZGF0ZUxpc3QobGlzdCwgbmV3SXRlbSkge1xyXG4gICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgbmV3SXRlbSxcclxuICAgICAgICAgICAgICAgIC4uLmxpc3QuZmlsdGVyKChlbCkgPT4gIShlbC50aXRsZSA9PT0gbmV3SXRlbS50aXRsZSAmJiBlbC5ncm91cCA9PT0gbmV3SXRlbS5ncm91cCkpLFxyXG4gICAgICAgICAgICBdLnNsaWNlKDAsIG1heEl0ZW1zQWxsb3dlZCk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgYWRkVG9TZWFyY2hIaXN0b3J5KHNlYXJjaEl0ZW0sIGdyb3VwLCB1cmwpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2VhcmNoSXRlbU9iamVjdCA9IHsgdGl0bGU6IHNlYXJjaEl0ZW0sIGdyb3VwLCB1cmwgfTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hfaGlzdG9yeSA9IHRoaXMudXBkYXRlTGlzdChcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoX2hpc3RvcnksXHJcbiAgICAgICAgICAgICAgICBzZWFyY2hJdGVtT2JqZWN0XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgZGVsZXRlRnJvbUhpc3Rvcnkoc2VhcmNoSXRlbSwgZ3JvdXApIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hfaGlzdG9yeSA9IHRoaXMuc2VhcmNoX2hpc3RvcnkuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKGVsKSA9PiAhKGVsLnRpdGxlID09PSBzZWFyY2hJdGVtICYmIGVsLmdyb3VwID09PSBncm91cClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBkZWxldGVBbGxIaXN0b3J5KCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaF9oaXN0b3J5ID0gW107XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgYWRkVG9GYXZvcml0ZXMoZmF2SXRlbSwgZ3JvdXAsIHVybCkge1xyXG4gICAgICAgICAgICAvLyBoZXJlIGlmIHRoZSBpdGVtIG1hcmtlZCBhcyBmYXZvcml0ZXMgd2UgbWF5IG9wdGlvbmFsbHkgZGVsZXRlIGl0IGZyb20gcmVjZW50IHNlYXJjaHNcclxuICAgICAgICAgICAgaWYgKCFyZXRhaW5SZWNlbnRJZkZhdm9yaXRlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUZyb21IaXN0b3J5KGZhdkl0ZW0sIGdyb3VwKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgZmF2SXRlbU9iamVjdCA9IHsgdGl0bGU6IGZhdkl0ZW0sIGdyb3VwLCB1cmwgfTtcclxuICAgICAgICAgICAgdGhpcy5mYXZvcml0ZV9pdGVtcyA9IHRoaXMudXBkYXRlTGlzdChcclxuICAgICAgICAgICAgICAgIHRoaXMuZmF2b3JpdGVfaXRlbXMsXHJcbiAgICAgICAgICAgICAgICBmYXZJdGVtT2JqZWN0XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgZGVsZXRlRnJvbUZhdm9yaXRlcyhmYXZJdGVtLCBncm91cCkge1xyXG4gICAgICAgICAgICB0aGlzLmZhdm9yaXRlX2l0ZW1zID0gdGhpcy5mYXZvcml0ZV9pdGVtcy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAoZWwpID0+ICEoZWwudGl0bGUgPT09IGZhdkl0ZW0gJiYgZWwuZ3JvdXAgPT09IGdyb3VwKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGRlbGV0ZUFsbEZhdm9yaXRlcygpIHtcclxuICAgICAgICAg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