Skip to content

Commit 59e5997

Browse files
authored
Merge pull request #254 from performant-software/feature/cdc114_iiif_manifests
CDC #114 - IIIF Manifests
2 parents 2600e8e + 81c79f8 commit 59e5997

File tree

12 files changed

+120
-62
lines changed

12 files changed

+120
-62
lines changed

packages/controlled-vocabulary/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@performant-software/controlled-vocabulary",
3-
"version": "1.1.4",
3+
"version": "1.1.5",
44
"description": "A package of components to allow user to configure dropdown elements. Use with the \"controlled_vocabulary\" gem.",
55
"license": "MIT",
66
"main": "./build/index.js",
@@ -12,8 +12,8 @@
1212
"build": "webpack --mode production && flow-copy-source -v src types"
1313
},
1414
"dependencies": {
15-
"@performant-software/semantic-components": "^1.1.4",
16-
"@performant-software/shared-components": "^1.1.4",
15+
"@performant-software/semantic-components": "^1.1.5",
16+
"@performant-software/shared-components": "^1.1.5",
1717
"i18next": "^21.9.2",
1818
"semantic-ui-react": "^2.1.2",
1919
"underscore": "^1.13.2"

packages/geospatial/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@performant-software/geospatial",
3-
"version": "1.1.4",
3+
"version": "1.1.5",
44
"description": "TODO: ADD",
55
"license": "MIT",
66
"main": "./build/index.js",

packages/semantic-ui/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@performant-software/semantic-components",
3-
"version": "1.1.4",
3+
"version": "1.1.5",
44
"description": "A package of shared components based on the Semantic UI Framework.",
55
"license": "MIT",
66
"main": "./build/index.js",
@@ -12,7 +12,7 @@
1212
"build": "webpack --mode production && flow-copy-source -v src types"
1313
},
1414
"dependencies": {
15-
"@performant-software/shared-components": "^1.1.4",
15+
"@performant-software/shared-components": "^1.1.5",
1616
"@react-google-maps/api": "^2.8.1",
1717
"axios": "^0.26.1",
1818
"i18next": "^19.4.4",

packages/semantic-ui/src/components/DataTableColumnSelector.js

Lines changed: 42 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,7 @@ const useColumnSelector = (WrappedComponent: ComponentType<any>) => (
144144
{...this.props}
145145
className={`data-table-column-selector ${this.props.className}`}
146146
columns={this.state.columns}
147-
renderListHeader={this.props.configurable
148-
? this.renderHeader.bind(this)
149-
: undefined}
147+
renderListHeader={this.renderHeader.bind(this)}
150148
/>
151149
);
152150
}
@@ -157,45 +155,51 @@ const useColumnSelector = (WrappedComponent: ComponentType<any>) => (
157155
* @returns {*}
158156
*/
159157
renderHeader() {
158+
if (!(this.props.configurable || this.props.renderListHeader)) {
159+
return null;
160+
}
161+
160162
return (
161163
<>
162164
{ this.props.renderListHeader && this.props.renderListHeader() }
163-
<Dropdown
164-
aria-label='Select Columns'
165-
basic
166-
button
167-
icon='cog'
168-
className='icon configure-button open-right'
169-
closeOnBlur={false}
170-
>
171-
<Dropdown.Menu>
172-
{ this.state.columns
173-
.filter((c) => c.label && c.label.length)
174-
.map((c, index) => (
175-
<Draggable
176-
id={c.name}
177-
index={index}
178-
key={c.name}
179-
onDrag={this.onDrag.bind(this)}
180-
>
181-
<Dropdown.Item
182-
aria-dropeffect='move'
183-
onClick={(e) => e.stopPropagation()}
165+
{ this.props.configurable && (
166+
<Dropdown
167+
aria-label='Select Columns'
168+
basic
169+
button
170+
icon='cog'
171+
className='icon configure-button open-right'
172+
closeOnBlur={false}
173+
>
174+
<Dropdown.Menu>
175+
{ this.state.columns
176+
.filter((c) => c.label && c.label.length)
177+
.map((c, index) => (
178+
<Draggable
179+
id={c.name}
180+
index={index}
181+
key={c.name}
182+
onDrag={this.onDrag.bind(this)}
184183
>
185-
<Icon
186-
name='bars'
187-
/>
188-
<Checkbox
189-
aria-label='Select Column'
190-
checked={!c.hidden}
191-
label={c.label}
192-
onClick={this.onColumnCheckbox.bind(this, c)}
193-
/>
194-
</Dropdown.Item>
195-
</Draggable>
196-
))}
197-
</Dropdown.Menu>
198-
</Dropdown>
184+
<Dropdown.Item
185+
aria-dropeffect='move'
186+
onClick={(e) => e.stopPropagation()}
187+
>
188+
<Icon
189+
name='bars'
190+
/>
191+
<Checkbox
192+
aria-label='Select Column'
193+
checked={!c.hidden}
194+
label={c.label}
195+
onClick={this.onColumnCheckbox.bind(this, c)}
196+
/>
197+
</Dropdown.Item>
198+
</Draggable>
199+
))}
200+
</Dropdown.Menu>
201+
</Dropdown>
202+
)}
199203
</>
200204
);
201205
}

packages/semantic-ui/src/components/ItemsToggle.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ type Props = {
1717
defaultView?: number,
1818
hideToggle?: boolean,
1919
onSort?: (sortColumn: string, sortDirection?: ?string) => void,
20+
renderListHeader?: () => JSX.Element,
2021
sort?: Array<Sort>,
2122
sortColor?: string,
2223
sortColumn?: string,
@@ -80,7 +81,7 @@ const useItemsToggle = (WrappedComponent: ComponentType<any>) => (
8081
* @returns {boolean|*}
8182
*/
8283
isHidden() {
83-
return this.props.hideToggle && _.isEmpty(this.props.sort);
84+
return this.props.hideToggle && _.isEmpty(this.props.sort) && !this.props.renderListHeader;
8485
}
8586

8687
/**
@@ -110,14 +111,10 @@ const useItemsToggle = (WrappedComponent: ComponentType<any>) => (
110111
* @returns {*}
111112
*/
112113
render() {
113-
const renderListHeader = this.isHidden()
114-
? undefined
115-
: this.renderHeader.bind(this);
116-
117114
return (
118115
<WrappedComponent
119116
{...this.props}
120-
renderListHeader={renderListHeader}
117+
renderListHeader={this.renderHeader.bind(this)}
121118
view={this.state.view}
122119
/>
123120
);
@@ -139,6 +136,7 @@ const useItemsToggle = (WrappedComponent: ComponentType<any>) => (
139136

140137
return (
141138
<>
139+
{ this.props.renderListHeader && this.props.renderListHeader() }
142140
{ !this.props.hideToggle && (
143141
<>
144142
<Button

packages/semantic-ui/src/components/List.js

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,11 @@ type Props = {
197197
*/
198198
renderSearch?: () => Element<any>,
199199

200+
/**
201+
* Returns true if the renderSearch prop should be used to render a search input element.
202+
*/
203+
searchable?: boolean,
204+
200205
/**
201206
* If set to <code>true</code>, checkboxes will render as the first table column, allowing each row to be selectable.
202207
* The consuming component is responsible for tracking the selected items.
@@ -841,10 +846,15 @@ const useList = (WrappedComponent: ComponentType<any>) => (
841846
filters,
842847
perPageOptions,
843848
renderListHeader,
844-
renderSearch
849+
renderSearch,
850+
searchable
845851
} = this.props;
846852

847-
if (filters || perPageOptions || renderListHeader || renderSearch) {
853+
const hasFilters = filters && filters.component;
854+
const hasSearch = searchable && renderSearch;
855+
const headerContent = renderListHeader && renderListHeader();
856+
857+
if (hasFilters || perPageOptions || headerContent || hasSearch) {
848858
renderHeader = true;
849859
}
850860

@@ -879,9 +889,9 @@ const useList = (WrappedComponent: ComponentType<any>) => (
879889
secondary
880890
className='flex-end-menu'
881891
>
882-
{ renderListHeader && (
892+
{ headerContent && (
883893
<Menu.Menu className='list-header-menu'>
884-
{ renderListHeader() }
894+
{ headerContent }
885895
</Menu.Menu>
886896
)}
887897
<Menu.Menu>

packages/shared/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@performant-software/shared-components",
3-
"version": "1.1.4",
3+
"version": "1.1.5",
44
"description": "A package of shared, framework agnostic, components.",
55
"license": "MIT",
66
"main": "./build/index.js",

packages/storybook/src/semantic-ui/ItemList.stories.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,3 +395,49 @@ export const SortDescending = useDragDrop(() => (
395395
}]}
396396
/>
397397
));
398+
399+
export const CustomListHeader = useDragDrop(() => (
400+
<ItemList
401+
actions={actions}
402+
collectionName='items'
403+
onCopy={action('copy')}
404+
onLoad={(params) => Api.onLoad(_.extend(params, {
405+
items,
406+
perPage: number('Per page', 10)
407+
}))}
408+
hideToggle
409+
onDelete={action('delete')}
410+
onSave={action('save')}
411+
renderDescription={(item) => item.vin}
412+
renderExtra={(item) => item.address}
413+
renderHeader={(item) => <Header content={item.model} />}
414+
renderListHeader={() => (
415+
<Button
416+
icon='world'
417+
onClick={action('custom-list-header')}
418+
/>
419+
)}
420+
renderMeta={(item) => item.make}
421+
searchable={boolean('Searchable', true)}
422+
/>
423+
));
424+
425+
export const NoListHeader = useDragDrop(() => (
426+
<ItemList
427+
actions={actions}
428+
collectionName='items'
429+
onCopy={action('copy')}
430+
onLoad={(params) => Api.onLoad(_.extend(params, {
431+
items,
432+
perPage: number('Per page', 10)
433+
}))}
434+
hideToggle
435+
onDelete={action('delete')}
436+
onSave={action('save')}
437+
renderDescription={(item) => item.vin}
438+
renderExtra={(item) => item.address}
439+
renderHeader={(item) => <Header content={item.model} />}
440+
renderMeta={(item) => item.make}
441+
searchable={false}
442+
/>
443+
));

packages/storybook/src/semantic-ui/ListTable.stories.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -611,4 +611,4 @@ export const NoColumnSelector = useDragDrop(() => (
611611
onSave={action('save')}
612612
searchable={boolean('Searchable', true)}
613613
/>
614-
));
614+
));

packages/user-defined-fields/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@performant-software/user-defined-fields",
3-
"version": "1.1.4",
3+
"version": "1.1.5",
44
"description": "A package of components used for allowing end users to define fields on models. Use with the \"user_defined_fields\" gem.",
55
"license": "MIT",
66
"main": "./build/index.js",
@@ -9,8 +9,8 @@
99
"build": "webpack --mode production && flow-copy-source -v src types"
1010
},
1111
"dependencies": {
12-
"@performant-software/semantic-components": "^1.1.4",
13-
"@performant-software/shared-components": "^1.1.4",
12+
"@performant-software/semantic-components": "^1.1.5",
13+
"@performant-software/shared-components": "^1.1.5",
1414
"i18next": "^21.9.1",
1515
"semantic-ui-react": "^2.1.2",
1616
"underscore": "^1.13.2"

0 commit comments

Comments
 (0)