Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions packages/browser/toggleFullScreen/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export function fullScreen(id?: string) {

const screen = (el as Element).requestFullscreen
let wScript = null
if (typeof screen != 'undefined' && screen) {
if (typeof screen != 'undefined') {
screen.call(el)
return
}
Expand All @@ -23,7 +23,7 @@ export function exitFullScreen() {

let wScript = null

if (typeof screen != 'undefined' && screen) {
if (typeof screen != 'undefined') {
screen.call(document)
return
}
Expand All @@ -35,7 +35,15 @@ export function exitFullScreen() {
}
}

export function toggleFullScreen(element: HTMLElement) {
export function isFullScreen(): boolean {
const fullscreenElement
= document.fullscreenElement
|| (document as any).webkitFullscreenElement
|| (document as any).mozFullScreenElement
return fullscreenElement !== undefined
}

export function toggleFullScreen(element?: HTMLElement) {
element = element || document.documentElement
if (
(
Expand Down
2 changes: 1 addition & 1 deletion packages/core/getFieldWithDefault/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@ Get object field with multiple default fields.
import { getFieldWithDefault } from '@use-kit/functions'

const obj = { name: 'asuka', age: 23, height: 158 }
const ret = getFieldWithDefault(obj, 'default', obj.id, obj.name, obj.nickname) // 'asuak'
const ret = getFieldWithDefault(obj, obj.id, obj.name, obj.nickname) // 'asuak'
```
10 changes: 8 additions & 2 deletions packages/core/getFieldWithDefault/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,16 @@ describe('getFieldWithDefault', () => {
const obj = { name: 'asuka', age: 23, height: 158 }
expect(getFieldWithDefault(
obj,
'defaultValue',
(obj as any)?.id,
obj?.name,
(obj as any)?.nickname,
)).toMatchInlineSnapshot('"defaultValue"')
)).toMatchInlineSnapshot('"asuka"')
})

it('multiple undefined', () => {
const obj = { name: 'asuka', age: 23, height: 158 }
const fields = [undefined, null, '', 'field']

expect(getFieldWithDefault(obj, ...fields)).toMatchInlineSnapshot('"field"')
})
})
12 changes: 5 additions & 7 deletions packages/core/getFieldWithDefault/index.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
interface ObjectWithFields { [key: string]: any }

// TODO: get field with multiple default fields
export function getFieldWithDefault<T>(
obj: ObjectWithFields,
defaultValue: T,
...fields: string[]
...fields: T[]
): T {
const defaultValue = fields.find(f => f) as T

if (typeof obj !== 'object' || obj === null)
return defaultValue

console.log('fields', fields)
for (const field of fields) {
if (Reflect.has(obj, field))
return field as T
if (Reflect.has(obj, field as string))
return field
}
console.log('default')

return defaultValue
}
8 changes: 8 additions & 0 deletions packages/core/getRatingStar/index.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { describe, expect, it } from 'vitest'
import { getRatingStar } from '.'

describe('getRatingStar', () => {
it('should return a rating', () => {
expect(getRatingStar(5)).toMatchInlineSnapshot('"★★★★★"')
})
})
6 changes: 6 additions & 0 deletions packages/core/getRatingStar/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
const STARS = '★★★★★☆☆☆☆☆'

export function getRatingStar(score: number) {
const MAX_SCORE = 5
return STARS.slice(MAX_SCORE - score, MAX_SCORE + (MAX_SCORE - score))
}
1 change: 1 addition & 0 deletions packages/core/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ export * from './generateTree'
export * from './getAge'
export * from './getConstellation'
export * from './getField'
export * from './getFieldWithDefault'
export * from './getFileType'
export * from './getKeys'
export * from './getObjectField'
Expand Down
4 changes: 4 additions & 0 deletions packages/core/isEmpty/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,8 @@ describe('is empty', () => {
it('should be true', () => {
expect(isEmpty()).toBe(true)
})

it('should be true with string trim', () => {
expect(isEmpty(' ')).toBe(true)
})
})
2 changes: 1 addition & 1 deletion packages/core/isEmpty/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ export const isEmpty = (
return true

if (isString(field))
return field === ''
return (field as string).trim() === ''

if (isArray(field))
return !(field as []).length
Expand Down
33 changes: 33 additions & 0 deletions packages/core/mergeList/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,36 @@ describe('merge field', () => {
]
`))
})

describe('merge with more field', () => {
const targetList = [{
id: 1,
name: 'akashi',
}, {
id: 2,
name: 'asuka',
}]

const sourceList = [{
id: 3,
name: 'shiori',
}]

const ret = mergeList(targetList, sourceList, 'id')
it('should return merge list', () => expect(ret).toMatchInlineSnapshot(`
[
{
"id": 1,
"name": "akashi",
},
{
"id": 2,
"name": "asuka",
},
{
"id": 3,
"name": "shiori",
},
]
`))
})
10 changes: 7 additions & 3 deletions packages/core/mergeList/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,13 @@ export const mergeList = (
sourceList: objParams[],
fieldKey: string,
) => {
targetList.forEach((target) => {
const source = sourceList.find(s => s[fieldKey] === target[fieldKey])
mergeField(target, source ?? {})
sourceList.forEach((source) => {
const target = targetList.find(t => t[fieldKey] === source[fieldKey])
if (!target)
targetList.push(source)

else
mergeField(target, source ?? {})
})

return targetList
Expand Down
2 changes: 1 addition & 1 deletion packages/docs/core/getFieldWithDefault/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@ Get object field with multiple default fields.
import { getFieldWithDefault } from '@use-kit/functions'

const obj = { name: 'asuka', age: 23, height: 158 }
const ret = getFieldWithDefault(obj, 'default', obj.id, obj.name, obj.nickname) // 'asuak'
const ret = getFieldWithDefault(obj, obj.id, obj.name, obj.nickname) // 'asuak'
```