Skip to content

Commit fc7def3

Browse files
committed
Revert "prepare 1.6.6"
This reverts commit 06df02a.
1 parent 3799d6f commit fc7def3

File tree

14 files changed

+98
-45
lines changed

14 files changed

+98
-45
lines changed

packages/@headlessui-react/src/components/combobox/combobox.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ describe('Rendering', () => {
172172
})
173173
)
174174

175-
describe.skip('Equality', () => {
175+
describe('Equality', () => {
176176
let options = [
177177
{ id: 1, name: 'Alice' },
178178
{ id: 2, name: 'Bob' },

packages/@headlessui-react/src/components/combobox/combobox.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -311,10 +311,11 @@ let ComboboxRoot = forwardRefWithAs(function Combobox<
311311
props: Props<
312312
TTag,
313313
ComboboxRenderPropArg<TType>,
314-
'value' | 'onChange' | 'disabled' | 'name' | 'nullable' | 'multiple'
314+
'value' | 'onChange' | 'disabled' | 'name' | 'nullable' | 'multiple' | 'by'
315315
> & {
316316
value: TType
317317
onChange(value: TType): void
318+
by?: (keyof TType & string) | ((a: TType, z: TType) => boolean)
318319
disabled?: boolean
319320
__demoMode?: boolean
320321
name?: string
@@ -327,6 +328,7 @@ let ComboboxRoot = forwardRefWithAs(function Combobox<
327328
name,
328329
value,
329330
onChange: theirOnChange,
331+
by = (a, z) => a === z,
330332
disabled = false,
331333
__demoMode = false,
332334
nullable = false,
@@ -352,7 +354,14 @@ let ComboboxRoot = forwardRefWithAs(function Combobox<
352354
let buttonRef = useRef<_Data['buttonRef']['current']>(null)
353355
let optionsRef = useRef<_Data['optionsRef']['current']>(null)
354356

355-
let compare = useEvent((a, z) => a === z)
357+
let compare = useEvent(
358+
typeof by === 'string'
359+
? (a: TType, z: TType) => {
360+
let property = by as unknown as keyof TType
361+
return a[property] === z[property]
362+
}
363+
: by
364+
)
356365

357366
let isSelected: (value: TType) => boolean = useCallback(
358367
(compareValue) =>

packages/@headlessui-react/src/components/listbox/listbox.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ describe('Rendering', () => {
163163
})
164164
)
165165

166-
describe.skip('Equality', () => {
166+
describe('Equality', () => {
167167
let options = [
168168
{ id: 1, name: 'Alice' },
169169
{ id: 2, name: 'Bob' },

packages/@headlessui-react/src/components/listbox/listbox.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -311,10 +311,11 @@ let ListboxRoot = forwardRefWithAs(function Listbox<
311311
props: Props<
312312
TTag,
313313
ListboxRenderPropArg,
314-
'value' | 'onChange' | 'disabled' | 'horizontal' | 'name' | 'multiple'
314+
'value' | 'onChange' | 'disabled' | 'horizontal' | 'name' | 'multiple' | 'by'
315315
> & {
316316
value: TType
317317
onChange(value: TType): void
318+
by?: (keyof TType & string) | ((a: TType, z: TType) => boolean)
318319
disabled?: boolean
319320
horizontal?: boolean
320321
name?: string
@@ -326,6 +327,7 @@ let ListboxRoot = forwardRefWithAs(function Listbox<
326327
value,
327328
name,
328329
onChange,
330+
by = (a, z) => a === z,
329331
disabled = false,
330332
horizontal = false,
331333
multiple = false,
@@ -341,7 +343,14 @@ let ListboxRoot = forwardRefWithAs(function Listbox<
341343
value,
342344
onChange,
343345
mode: multiple ? ValueMode.Multi : ValueMode.Single,
344-
compare: useEvent((a, z) => a === z),
346+
compare: useEvent(
347+
typeof by === 'string'
348+
? (a: TType, z: TType) => {
349+
let property = by as unknown as keyof TType
350+
return a[property] === z[property]
351+
}
352+
: by
353+
),
345354
},
346355
},
347356
labelRef: createRef(),

packages/@headlessui-react/src/components/radio-group/radio-group.test.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ describe('Rendering', () => {
322322
})
323323
)
324324

325-
it.skip(
325+
it(
326326
'should expose internal data as a render prop',
327327
suppressConsoleLogs(async () => {
328328
function Example() {
@@ -372,7 +372,7 @@ describe('Rendering', () => {
372372
})
373373
)
374374

375-
describe.skip('Equality', () => {
375+
describe('Equality', () => {
376376
let options = [
377377
{ id: 1, name: 'Alice' },
378378
{ id: 2, name: 'Bob' },

packages/@headlessui-react/src/components/radio-group/radio-group.tsx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,17 +113,25 @@ let RadioGroupRoot = forwardRefWithAs(function RadioGroup<
113113
props: Props<
114114
TTag,
115115
RadioGroupRenderPropArg,
116-
RadioGroupPropsWeControl | 'value' | 'onChange' | 'disabled' | 'name'
116+
RadioGroupPropsWeControl | 'value' | 'onChange' | 'disabled' | 'name' | 'by'
117117
> & {
118118
value: TType
119119
onChange(value: TType): void
120+
by?: (keyof TType & string) | ((a: TType, z: TType) => boolean)
120121
disabled?: boolean
121122
name?: string
122123
},
123124
ref: Ref<HTMLElement>
124125
) {
125-
let { value, name, onChange, disabled = false, ...theirProps } = props
126-
let compare = useEvent((a, z) => a === z)
126+
let { value, name, onChange, by = (a, z) => a === z, disabled = false, ...theirProps } = props
127+
let compare = useEvent(
128+
typeof by === 'string'
129+
? (a: TType, z: TType) => {
130+
let property = by as unknown as keyof TType
131+
return a[property] === z[property]
132+
}
133+
: by
134+
)
127135
let [state, dispatch] = useReducer(stateReducer, { options: [] } as StateDefinition<TType>)
128136
let options = state.options as unknown as Option<TType>[]
129137
let [labelledby, LabelProvider] = useLabels()

packages/@headlessui-react/src/utils/render.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -126,20 +126,20 @@ function _render<TTag extends ElementType, TSlot>(
126126
}
127127

128128
let dataAttributes: Record<string, string> = {}
129-
// if (slot) {
130-
// let exposeState = false
131-
// let states = []
132-
// for (let [k, v] of Object.entries(slot)) {
133-
// if (typeof v === 'boolean') {
134-
// exposeState = true
135-
// }
136-
// if (v === true) {
137-
// states.push(k)
138-
// }
139-
// }
140-
//
141-
// if (exposeState) dataAttributes[`data-headlessui-state`] = states.join(' ')
142-
// }
129+
if (slot) {
130+
let exposeState = false
131+
let states = []
132+
for (let [k, v] of Object.entries(slot)) {
133+
if (typeof v === 'boolean') {
134+
exposeState = true
135+
}
136+
if (v === true) {
137+
states.push(k)
138+
}
139+
}
140+
141+
if (exposeState) dataAttributes[`data-headlessui-state`] = states.join(' ')
142+
}
143143

144144
if (Component === Fragment) {
145145
if (Object.keys(compact(rest)).length > 0) {

packages/@headlessui-vue/src/components/combobox/combobox.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ describe('Rendering', () => {
203203
})
204204
)
205205

206-
describe.skip('Equality', () => {
206+
describe('Equality', () => {
207207
let options = [
208208
{ id: 1, name: 'Alice' },
209209
{ id: 2, name: 'Bob' },

packages/@headlessui-vue/src/components/combobox/combobox.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ import { useOutsideClick } from '../../hooks/use-outside-click'
3535
import { Hidden, Features as HiddenFeatures } from '../../internal/hidden'
3636
import { objectToFormEntries } from '../../utils/form'
3737

38+
function defaultComparator<T>(a: T, z: T): boolean {
39+
return a === z
40+
}
41+
3842
enum ComboboxStates {
3943
Open,
4044
Closed,
@@ -112,6 +116,7 @@ export let Combobox = defineComponent({
112116
props: {
113117
as: { type: [Object, String], default: 'template' },
114118
disabled: { type: [Boolean], default: false },
119+
by: { type: [String, Function], default: () => defaultComparator },
115120
modelValue: { type: [Object, String, Number, Boolean] },
116121
name: { type: String },
117122
nullable: { type: Boolean, default: false },
@@ -175,7 +180,11 @@ export let Combobox = defineComponent({
175180
value,
176181
mode,
177182
compare(a: any, z: any) {
178-
return a === z
183+
if (typeof props.by === 'string') {
184+
let property = props.by as unknown as any
185+
return a[property] === z[property]
186+
}
187+
return props.by(a, z)
179188
},
180189
nullable,
181190
inputRef,

packages/@headlessui-vue/src/components/listbox/listbox.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ describe('Rendering', () => {
183183
})
184184
)
185185

186-
describe.skip('Equality', () => {
186+
describe('Equality', () => {
187187
let options = [
188188
{ id: 1, name: 'Alice' },
189189
{ id: 2, name: 'Bob' },

0 commit comments

Comments
 (0)