diff --git a/.buildkite/pipelines/pipeline_prune_staging_docs.yml b/.buildkite/pipelines/pipeline_prune_staging_docs.yml new file mode 100644 index 000000000000..4134b919239f --- /dev/null +++ b/.buildkite/pipelines/pipeline_prune_staging_docs.yml @@ -0,0 +1,6 @@ +## 🏠/.buildkite/pipelines/pipeline_prune_staging_docs.yml + +steps: + - agents: + provider: "gcp" + command: .buildkite/scripts/pipelines/pipeline_prune_staging_docs.sh diff --git a/.buildkite/scripts/pipelines/pipeline_prune_staging_docs.sh b/.buildkite/scripts/pipelines/pipeline_prune_staging_docs.sh new file mode 100644 index 000000000000..2fa808b33024 --- /dev/null +++ b/.buildkite/scripts/pipelines/pipeline_prune_staging_docs.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +set -euo pipefail +set +x + +# Expected env variables: +# * GPROJECT - GCE project name, e.g. elastic-bekitzur +# * GCE_ACCOUNT - credentials for the google service account (JSON blob) +if [[ -z "${GCE_ACCOUNT}" ]]; then + echo ":fire: GCP credentials not set." 1>&2 + exit 1 +fi +if [[ -z "${GPROJECT}" ]]; then + echo "GPROJECT is not set, e.g. 'GPROJECT=elastic-bekitzur'" + exit 1 +fi + +# Login to the cloud with the service account +gcloud auth activate-service-account --key-file <(echo "${GCE_ACCOUNT}") +unset GCE_ACCOUNT + +EUI_DOCS_PROJECT=eui-docs-live +BUCKET=${GPROJECT}-${EUI_DOCS_PROJECT} + +# https://cloud.google.com/storage/docs/gsutil/commands/ls +ls_options=( + -d # only list directories + -l # Print additional details about the subdir +) +echo "Listing all PR staging links" +gsutil ls "${ls_options[@]}" "gs://${BUCKET}/pr_*" # | sort -k 2 # sort by the 2nd field returned by -l which is the 'created by' timestamp + +# https://cloud.google.com/storage/docs/gsutil/commands/rm +rm_options=( + -r # recursive, delete everything inside subdir + -m # enables multi-threading for large numbers of objects +) +# gsutil rm "${rm_options[@]}" "gs://${BUCKET}/pr_TODO" diff --git a/catalog-info.yaml b/catalog-info.yaml index dad75e9b53b2..a9f979619276 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -205,7 +205,6 @@ spec: build_tags: false build_pull_requests: true filter_enabled: true - # Start Buildkite jobs using the API only filter_condition: | (build.creator.name == 'elasticmachine' && build.pull_request.id != null) teams: @@ -258,6 +257,48 @@ spec: everyone: access_level: READ_ONLY +--- +## +# buildkite-pipeline-eui-prune-staging-docs +# Run this pipeline manually in Buildkite's UI whenever we need to delete old PR staging servers +## + +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/e57ee3bed7a6f73077a3f55a38e76e40ec87a7cf/rre.schema.json +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: buildkite-pipeline-eui-prune-staging-docs + description: EUI pipeline to prune old PR staging docs + links: [ + { + title: "EUI - prune-staging-docs", + url: "https://buildkite.com/elastic/eui-prune-staging-docs", + } + ] + +spec: + type: buildkite-pipeline + owner: group:eui-team + system: buildkite + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + name: eui-prune-staging-docs + spec: + repository: elastic/eui + pipeline_file: ".buildkite/pipelines/pipeline_prune_staging_docs.yml" + provider_settings: + # Start Buildkite jobs using the web UI only + build_branches: false + build_tags: false + build_pull_requests: false + teams: + eui-team: + access_level: MANAGE_BUILD_AND_READ + everyone: + access_level: READ_ONLY + --- ## # buildkite-pipeline-eui-release diff --git a/changelogs/upcoming/7702.md b/changelogs/upcoming/7702.md new file mode 100644 index 000000000000..d89537dcc246 --- /dev/null +++ b/changelogs/upcoming/7702.md @@ -0,0 +1 @@ +- Updated `EuiSearchBar` to allow the `@` special character in query string searches diff --git a/changelogs/upcoming/7708.md b/changelogs/upcoming/7708.md new file mode 100644 index 000000000000..9d8803b71b49 --- /dev/null +++ b/changelogs/upcoming/7708.md @@ -0,0 +1,3 @@ +**Bug fixes** + +- Fixed a visual bug with `EuiSuperDatePicker`'s absolute tab on small mobile screens diff --git a/src/components/date_picker/super_date_picker/date_popover/_date_popover_content.scss b/src/components/date_picker/super_date_picker/date_popover/_date_popover_content.scss index 34bb31560fb5..0182e2580662 100644 --- a/src/components/date_picker/super_date_picker/date_popover/_date_popover_content.scss +++ b/src/components/date_picker/super_date_picker/date_popover/_date_popover_content.scss @@ -2,6 +2,10 @@ .euiDatePopoverContent .react-datepicker { width: $euiFormMaxWidth; max-width: 100%; + + @include euiBreakpoint('xs') { + width: $euiDatePickerCalendarWidth; + } } .euiDatePopoverContent__padded { @@ -11,10 +15,3 @@ .euiDatePopoverContent__padded--large { padding: $euiSize; } - -@include euiBreakpoint('xs') { - .euiDatePopoverContent { - // Small screens drop the time selector - width: $euiDatePickerCalendarWidth; - } -} diff --git a/src/components/search_bar/query/default_syntax.test.ts b/src/components/search_bar/query/default_syntax.test.ts index 7311fdeb56ea..1303b93a6e27 100644 --- a/src/components/search_bar/query/default_syntax.test.ts +++ b/src/components/search_bar/query/default_syntax.test.ts @@ -871,12 +871,12 @@ describe('defaultSyntax', () => { }); test('special characters', () => { - const ast = defaultSyntax.parse('*_-:'); + const ast = defaultSyntax.parse('*_-:@'); const clauses = ast.getTermClauses(); expect(clauses).toEqual([ { type: 'term', - value: '*_-:', + value: '*_-:@', match: 'must', }, ]); diff --git a/src/components/search_bar/query/default_syntax.ts b/src/components/search_bar/query/default_syntax.ts index 4679a53e2227..fb1abda17fb4 100644 --- a/src/components/search_bar/query/default_syntax.ts +++ b/src/components/search_bar/query/default_syntax.ts @@ -169,7 +169,7 @@ word wordChar = alnum - / [-_*:/] + / [-_*:/@] / escapedChar / extendedGlyph