@explorer-1/vue 1.0.6 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/package.json +25 -24
  3. package/src/components/BlockAccordion/BlockAccordion.vue +1 -1
  4. package/src/components/BlockCsrTable/BlockCsrTable.vue +1 -1
  5. package/src/components/BlockCsrTable/CsrTestLimitsTable.vue +1 -0
  6. package/src/components/BlockGist/BlockGist.vue +2 -1
  7. package/src/components/BlockLinkCard/BlockLinkCardCollectionLg.vue +1 -1
  8. package/src/components/CalendarChip/CalendarChip.vue +1 -1
  9. package/src/components/HeroInlineMedia/HeroInlineMedia.vue +1 -1
  10. package/src/components/MetadataEduResource/MetadataEduResource.vue +1 -1
  11. package/src/components/MetadataEvent/MetadataEvent.vue +1 -1
  12. package/src/components/MissionDetailHighlights/MissionDetailHighlights.vue +24 -19
  13. package/src/components/MixinFancybox/MixinFancybox.vue +2 -3
  14. package/src/components/NavDesktop/NavDesktopDropdownMore.vue +1 -1
  15. package/src/components/NavJumpMenu/NavJumpMenu.vue +2 -2
  16. package/src/components/NavJumpMenu/NavJumpMenuContent.vue +1 -1
  17. package/src/components/NavSearchForm/NavSearchForm.vue +1 -1
  18. package/src/components/RoboticsDetailStats/RoboticsDetailStats.vue +3 -3
  19. package/src/components/SearchResultsList/SearchResultsList.vue +1 -1
  20. package/src/components/ShareButtonsEdu/ShareButtonsEdu.vue +1 -1
  21. package/src/components/TextArea/TextArea.vue +2 -1
  22. package/src/components/TextInput/TextInput.vue +1 -1
  23. package/src/main.ts +1 -1
  24. package/src/templates/edu/PageEduNewsDetail/PageEduNewsDetail.vue +1 -1
  25. package/src/templates/edu/PageEduStudentProject/PageEduStudentProject.vue +1 -1
  26. package/vite.config.ts +0 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @explorer-1/vue
2
2
 
3
+ ## 1.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 582fa5e: Updating to Node 24. Updating dependencies.
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [582fa5e]
12
+ - @explorer-1/common@2.1.0
13
+
3
14
  ## 1.0.6
4
15
 
5
16
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@explorer-1/vue",
3
- "version": "1.0.6",
3
+ "version": "1.1.0",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -13,37 +13,38 @@
13
13
  "type": "module",
14
14
  "prettier": "@explorer-1/prettier-config",
15
15
  "dependencies": {
16
- "@fancyapps/ui": "^4.0.26",
17
- "@tailwindcss/forms": "^0.5.7",
18
- "ag-grid-vue3": "^33.2.0",
19
- "animejs": "^3.2.2",
16
+ "@fancyapps/ui": "^6.1.11",
17
+ "@tailwindcss/forms": "^0.5.11",
18
+ "ag-grid-vue3": "^35.0.1",
19
+ "animejs": "^4.3.5",
20
20
  "click-outside-vue3": "^4.0.1",
21
21
  "datebook": "^8.0.1",
22
- "dayjs": "^1.11.11",
23
- "fast-qs": "^2.0.3",
24
- "lodash": "^4.17.21",
22
+ "dayjs": "^1.11.19",
23
+ "fast-qs": "^2.1.2",
24
+ "lodash": "^4.17.23",
25
25
  "mitt": "^3.0.1",
26
- "sass": "^1.77.4",
27
- "swiper": "^11.1.3",
28
- "tailwindcss": "^3.4.3",
26
+ "sass": "^1.97.3",
27
+ "swiper": "^12.1.2",
28
+ "tailwindcss": "^3.4.19",
29
29
  "twitter-widgets": "^2.0.0",
30
- "vue": "^3.5.3",
30
+ "vue": "^3.5.28",
31
31
  "vue-bind-once": "^0.2.1",
32
+ "vue-router": "^5.0.2",
32
33
  "vue3-compare-image": "^1.2.5",
33
- "vue3-observe-visibility": "^1.0.1",
34
- "@explorer-1/common": "2.0.4"
34
+ "vue3-observe-visibility": "^1.0.4",
35
+ "@explorer-1/common": "2.1.0"
35
36
  },
36
37
  "devDependencies": {
37
- "@vitejs/plugin-vue": "^5.0.4",
38
- "a11y-dialog": "^8.1.0",
39
- "autoprefixer": "^10.4.19",
40
- "postcss": "^8.4.38",
41
- "postcss-import": "^16.1.0",
42
- "typescript": "^5.4.5",
43
- "unplugin-vue-components": "^0.27.0",
44
- "vite": "^5.3.1",
45
- "vite-plugin-dts": "^3.9.1",
46
- "vue-tsc": "^2.0.6",
38
+ "@vitejs/plugin-vue": "^6.0.4",
39
+ "a11y-dialog": "^8.1.5",
40
+ "autoprefixer": "^10.4.24",
41
+ "postcss": "^8.5.6",
42
+ "postcss-import": "^16.1.1",
43
+ "typescript": "^5.9.3",
44
+ "unplugin-vue-components": "^31.0.0",
45
+ "vite": "^7.3.1",
46
+ "vite-plugin-dts": "^4.5.4",
47
+ "vue-tsc": "^3.2.4",
47
48
  "@explorer-1/prettier-config": "1.0.0"
48
49
  },
49
50
  "storybook": {
@@ -26,7 +26,7 @@ export interface AccordionBlockObject {
26
26
  accordionItemsHeadingLevel: string
27
27
  accordionItems: AccordionItemBlock[]
28
28
  }
29
- interface BlockAccordionProps {
29
+ export interface BlockAccordionProps {
30
30
  data: AccordionBlockObject
31
31
  }
32
32
 
@@ -17,7 +17,7 @@ import { AgGridVue } from 'ag-grid-vue3'
17
17
  ModuleRegistry.registerModules([AllCommunityModule])
18
18
  ModuleRegistry.registerModules([ValidationModule])
19
19
 
20
- interface BlockCsrTableProps {
20
+ export interface BlockCsrTableProps {
21
21
  rowData?: BlockCsrTableRow[]
22
22
  attachmentPrefix?: string
23
23
  apiEndpoint?: string
@@ -23,6 +23,7 @@ withDefaults(defineProps<CsrTestLimitsTableProps>(), {
23
23
  const headerClass = [
24
24
  'bg-jpl-blue-darker edu:bg-jpl-violet-darker font-secondary text-white text-sm border-gray-light-mid px-3 border-b text-left'
25
25
  ]
26
+ // @ts-ignore
26
27
  const CsrTestLimitsTableRef = ref()
27
28
  const theme = themeMaterial.withParams({
28
29
  accentColor: 'rgb(25 156 227)', // jpl-blue-light
@@ -9,11 +9,12 @@ export interface BlockGistData extends BlockData {
9
9
  id?: string
10
10
  url?: string
11
11
  }
12
- interface BlockGistProps {
12
+ export interface BlockGistProps {
13
13
  data: BlockGistData
14
14
  }
15
15
 
16
16
  const props = defineProps<BlockGistProps>()
17
+ // @ts-ignore
17
18
  const frame = ref()
18
19
  const loaded = ref(false)
19
20
  const checkGistLoaded = async () => {
@@ -8,7 +8,7 @@ import BaseImagePlaceholder from './../BaseImagePlaceholder/BaseImagePlaceholder
8
8
  import BasePill from './../BasePill/BasePill.vue'
9
9
  import MetadataEduResource from './../MetadataEduResource/MetadataEduResource.vue'
10
10
 
11
- interface BlockLinkCardCollectionLgProps {
11
+ export interface BlockLinkCardCollectionLgProps {
12
12
  theItem?: EduResourceCardObject
13
13
  metadataType?: ContentTypeKey
14
14
  metadataAttrs?: any
@@ -4,7 +4,7 @@ import { useThemeStore } from '../../store/theme'
4
4
  import { mixinFormatSplitEventDates } from './../../utils/mixins'
5
5
  const themeStore = useThemeStore()
6
6
 
7
- interface CalendarChipProps {
7
+ export interface CalendarChipProps {
8
8
  startDate?: string
9
9
  endDate?: string
10
10
  ongoing?: boolean
@@ -12,7 +12,7 @@ import BlockImageStandard from './../BlockImage/BlockImageStandard.vue'
12
12
  import BlockVideo, { type BlockVideoData } from './../BlockVideo/BlockVideo.vue'
13
13
  import type { StreamfieldBlockData } from './../../interfaces'
14
14
 
15
- interface HeroInlineMediaProps {
15
+ export interface HeroInlineMediaProps {
16
16
  heroBlocks: StreamfieldBlockData[]
17
17
  constrain?: boolean
18
18
  }
@@ -8,7 +8,7 @@ import IconProfile from './../Icons/IconProfile.vue'
8
8
  import IconTime from './../Icons/IconTime.vue'
9
9
  import { rangeifyGrades } from './../../utils/rangeifyGrades'
10
10
 
11
- interface MetadataEduResourceProps {
11
+ export interface MetadataEduResourceProps {
12
12
  resource: EduResourceCardObject
13
13
  /** If compact styling should be used */
14
14
  compact?: boolean
@@ -9,7 +9,7 @@ import IconLocation from './../Icons/IconLocation.vue'
9
9
  import { mixinFormatEventDates, mixinFormatEventTimeInHoursAndMinutes } from './../../utils/mixins'
10
10
  const themeStore = useThemeStore()
11
11
 
12
- interface MetadataEventProps {
12
+ export interface MetadataEventProps {
13
13
  event: EventCardObject
14
14
  compact?: boolean
15
15
  allowBreak?: boolean
@@ -168,7 +168,13 @@ import _throttle from 'lodash/throttle.js'
168
168
  import type { DebouncedFunc } from 'lodash'
169
169
  import type { Slide } from './MissionDetailHighlightsCarouselItem.vue'
170
170
  // @ts-ignore
171
- import anime from 'animejs'
171
+ import {
172
+ animate,
173
+ createDrawable,
174
+ createMotionPath,
175
+ createTimeline,
176
+ type TargetsParam
177
+ } from 'animejs'
172
178
  import MissionDetailHighlightsCarousel from './MissionDetailHighlightsCarousel.vue'
173
179
  import BaseHeading from './../BaseHeading/BaseHeading.vue'
174
180
 
@@ -254,32 +260,31 @@ export default defineComponent({
254
260
  this.lineFollower()
255
261
  },
256
262
  drawLine() {
257
- anime({
258
- targets: this.$refs.missionHighlightsPath,
259
- strokeDashoffset: [anime.setDashoffset, 0],
260
- easing: 'easeInOutSine',
263
+ animate(createDrawable(this.$refs.missionHighlightsPath as TargetsParam), {
264
+ draw: '0 1',
265
+ ease: 'easeInOutSine',
261
266
  duration: 2000,
262
- delay(_: HTMLElement, i: number) {
263
- return i * 250
267
+ delay(_: any, i: number) {
268
+ return (i * 250) as any
264
269
  },
265
- direction: 'alternate',
270
+ alternate: true,
266
271
  loop: false
267
272
  })
268
273
  },
269
274
  lineFollower() {
270
- const path = anime.path(this.$refs.missionHighlightsPath as SVGElement)
271
- const tl = anime.timeline()
272
- tl.add({
273
- targets: this.$refs.missionHighlightsMovingDot,
274
- translateX: path('x'),
275
- translateY: path('y'),
276
- easing: 'easeInOutSine',
275
+ const { translateX, translateY } = createMotionPath(
276
+ this.$refs.missionHighlightsPath as SVGElement
277
+ )
278
+ const tl = createTimeline()
279
+ tl.add(this.$refs.missionHighlightsMovingDot as TargetsParam, {
280
+ ease: 'easeInOutSine',
277
281
  duration: 2000,
278
- loop: false
282
+ loop: false,
283
+ x: translateX,
284
+ y: translateY
279
285
  })
280
- tl.add({
281
- targets: this.$refs.missionHighlightsTitle,
282
- easing: 'easeInOutSine',
286
+ tl.add(this.$refs.missionHighlightsTitle as TargetsParam, {
287
+ ease: 'easeInOutSine',
283
288
  duration: 250,
284
289
  opacity: ['0', '1'],
285
290
  loop: false
@@ -1,9 +1,8 @@
1
1
  <script lang="ts">
2
2
  // @ts-nocheck
3
3
  import { defineComponent } from 'vue'
4
- import { Fancybox } from '@fancyapps/ui'
5
- import { Fullscreen } from '@fancyapps/ui/src/shared/utils/Fullscreen.js'
6
- import '@fancyapps/ui/dist/fancybox.css'
4
+ import { Fancybox, Fullscreen } from '@fancyapps/ui'
5
+ import '@fancyapps/ui/dist/fancybox/fancybox.css'
7
6
  import MixinFancyboxOpenButton from './MixinFancyboxOpenButton.vue'
8
7
 
9
8
  export const fancyboxThemes = {
@@ -53,7 +53,7 @@
53
53
  <div
54
54
  v-for="(highlight, index) in highlightsColumn.highlights"
55
55
  :key="index"
56
- :class="{ 'mb-10': index + 1 !== highlightsColumn.highlights.length }"
56
+ :class="{ 'mb-10': Number(index) + 1 !== highlightsColumn.highlights.length }"
57
57
  >
58
58
  <NavHighlight :highlight="highlight.highlight" />
59
59
  </div>
@@ -37,7 +37,7 @@
37
37
  </NavSecondary>
38
38
  </template>
39
39
  <script setup lang="ts">
40
- import { computed, defineExpose, ref, onMounted, onUnmounted, watch } from 'vue'
40
+ import { computed, ref, onMounted, onUnmounted, watch } from 'vue'
41
41
  import { mixinUpdateSecondary } from './../../utils/mixins'
42
42
  import { useRoute } from 'vue-router'
43
43
  import NavSecondary from './../NavSecondary/NavSecondary.vue'
@@ -49,7 +49,7 @@ import type { BlockTextObject } from './../BlockText/BlockText.vue'
49
49
  import type { BlockData, BreadcrumbPathObject, StreamfieldBlockData } from './../../interfaces'
50
50
  import { getHeadingId } from '../../utils/getHeadingId'
51
51
 
52
- interface NavJumpMenuProps {
52
+ export interface NavJumpMenuProps {
53
53
  title?: string
54
54
  jumpLinks?: BreadcrumbPathObject[]
55
55
  blocks?: (StreamfieldBlockData | BlockData | BlockHeadingObject | BlockTextObject)[]
@@ -15,7 +15,7 @@
15
15
  v-if="$attrs['steps-numbering']"
16
16
  :class="$attrs['steps-classes']"
17
17
  aria-hidden
18
- >{{ `Step ${index + 1}:` }}</span
18
+ >{{ `Step ${Number(index) + 1}:` }}</span
19
19
  >
20
20
  {{ child.title }}
21
21
  </span>
@@ -6,7 +6,7 @@ import SearchInput from './../SearchInput/SearchInput.vue'
6
6
  const router = useRouter()
7
7
  const themeStore = useThemeStore()
8
8
 
9
- interface NavSearchFormProps {
9
+ export interface NavSearchFormProps {
10
10
  mobile?: boolean
11
11
  placeholder?: string
12
12
  }
@@ -127,9 +127,9 @@ export default defineComponent({
127
127
  hasContent(): boolean {
128
128
  return Boolean(
129
129
  this.allStats.length > 0 ||
130
- this.status !== '' ||
131
- this.robotDestinations.length > 0 ||
132
- this.animalAnalogIcon
130
+ this.status !== '' ||
131
+ this.robotDestinations.length > 0 ||
132
+ this.animalAnalogIcon
133
133
  )
134
134
  },
135
135
  allStats(): AlternativeStat[] {
@@ -116,7 +116,7 @@ export default defineComponent({
116
116
  }
117
117
  },
118
118
  computed: {
119
- results(): ElasticSearchPage[] {
119
+ results(): ElasticSearchPage[] | undefined {
120
120
  function parseType(type: string): string {
121
121
  return type.toLowerCase().replace('.', '_')
122
122
  }
@@ -11,7 +11,7 @@ import IconSocialPinterest from './../Icons/IconSocialPinterest.vue'
11
11
  import IconSocialTwitter from './../Icons/IconSocialTwitter.vue'
12
12
  import { mixinCanonicalUrl } from '../../utils/mixins'
13
13
 
14
- interface ShareButtonsEduProps {
14
+ export interface ShareButtonsEduProps {
15
15
  title: string
16
16
  url: string
17
17
  image?: string
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
2
  import { ref, computed } from 'vue'
3
- interface TextAreaProps {
3
+ export interface TextAreaProps {
4
4
  inputName: string
5
5
  label: string
6
6
  cols?: number
@@ -25,6 +25,7 @@ const props = withDefaults(defineProps<TextAreaProps>(), {
25
25
  const emit = defineEmits(['input', 'esc'])
26
26
 
27
27
  const model = defineModel({ type: String })
28
+ // @ts-ignore
28
29
  const TextAreaRef = ref(undefined)
29
30
  const isFocused = ref(false)
30
31
 
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
2
  import { ref, onMounted, computed } from 'vue'
3
- interface TextInputProps {
3
+ export interface TextInputProps {
4
4
  inputName: string
5
5
  type?: string
6
6
  required?: boolean
package/src/main.ts CHANGED
@@ -7,7 +7,7 @@ import filters from './utils/filters'
7
7
  import vClickOutside from 'click-outside-vue3'
8
8
  import VueCompareImage from 'vue3-compare-image'
9
9
  import { BindOncePlugin } from 'vue-bind-once'
10
- import './assets/scss/styles-with-fonts.scss'
10
+ import '@explorer-1/common/src/scss/styles-with-fonts.scss'
11
11
  import App from './App.vue'
12
12
 
13
13
  const pinia = createPinia()
@@ -1,5 +1,5 @@
1
1
  <script setup lang="ts">
2
- import { computed, ref, defineExpose } from 'vue'
2
+ import { computed, ref } from 'vue'
3
3
  import isEmpty from 'lodash/isEmpty.js'
4
4
  import type { AuthorObject, ImageObject, PageObject } from './../../../interfaces'
5
5
  import HeroMedia from './../../../components/HeroMedia/HeroMedia.vue'
@@ -244,7 +244,7 @@ const computedClass = computed((): string => {
244
244
  >
245
245
  <NavJumpMenu
246
246
  v-if="stepHeadings?.length"
247
- :key="route.fullPath"
247
+ :key="route ? route.fullPath : undefined"
248
248
  ref="PageEduStudentProjectJumpMenu"
249
249
  :title="data.title"
250
250
  :blocks="stepHeadings"
package/vite.config.ts CHANGED
@@ -19,8 +19,6 @@ export default defineConfig({
19
19
  preprocessorOptions: {
20
20
  scss: {
21
21
  silenceDeprecations: [
22
- // Deprecation Warning: https://sass-lang.com/d/mixed-decls
23
- 'mixed-decls',
24
22
  // Deprecation Warning: https://sass-lang.com/d/import
25
23
  'import',
26
24
  // Deprecation Warning: https://sass-lang.com/d/legacy-js-api