Skip to content
Snippets Groups Projects
Commit 07db2947 authored by Grzegorz Rola's avatar Grzegorz Rola
Browse files

Merge branch 'feature/unique-id' into 'master'

Unique identifier

See merge request !3
parents 297032ff 686da725
No related branches found
No related tags found
1 merge request!3Unique identifier
Pipeline #2977 passed
## [1.0.2] - 2020-02-24
### Added
- non unique identifier info
## [1.0.1] - 2020-02-20 ## [1.0.1] - 2020-02-20
### Fixed ### Fixed
- slashes in inputs - slashes in inputs
......
...@@ -31,7 +31,7 @@ table.sender-address tbody td { ...@@ -31,7 +31,7 @@ table.sender-address tbody td {
margin-bottom: 9px; margin-bottom: 9px;
padding: 15px 10px; padding: 15px 10px;
line-height: 1.3; line-height: 1.3;
vertical-align: middle; vertical-align: top;
border-top: 1px solid #e5e5e5; border-top: 1px solid #e5e5e5;
} }
...@@ -43,6 +43,18 @@ table.sender-address tbody tr:nth-child(even) td { ...@@ -43,6 +43,18 @@ table.sender-address tbody tr:nth-child(even) td {
background: #f9f9f9; background: #f9f9f9;
} }
table.sender-address input.non-unique {
background: #d62728;
}
table.sender-address tbody td span {
display: none;
}
table.sender-address tbody td.non-unique span {
display: block;
}
table.sender-address input[type="text"] { table.sender-address input[type="text"] {
max-width: 100%; max-width: 100%;
width: 100%; width: 100%;
......
fieldset.settings-field-sender-address{margin:0;padding:0;boder:0}table.sender-address{position:relative;table-layout:fixed;background:#fff;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);border-spacing:0;width:100%;clear:both;margin:0}table.sender-address thead td{display:table-cell;padding:1em;vertical-align:top;line-height:1.75em;text-align:left;font-weight:600;text-shadow:none;font-size:14px}table.sender-address tbody td{margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle;border-top:1px solid #e5e5e5}table.sender-address tfoot td{border-top:1px solid #e1e1e1}table.sender-address tbody tr:nth-child(even) td{background:#f9f9f9}table.sender-address input[type="text"]{max-width:100%;width:100%}table.sender-address input[type="email"]{max-width:100%;width:100%}table.sender-address tbody tr td:first-child select{width:100%}@media only screen and (max-width:600px){table.sender-address tbody tr td:first-child select{width:auto;max-width:100%}table.sender-address,table.sender-address tbody{display:block}table.sender-address thead{display:none}table.sender-address tbody tr td:first-child,table.sender-address thead tr td:first-child{width:100%;display:block}table.sender-address tbody tr,table.sender-address tbody td{display:block;width:100%}} fieldset.settings-field-sender-address{margin:0;padding:0;boder:0}table.sender-address{position:relative;table-layout:fixed;background:#fff;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);border-spacing:0;width:100%;clear:both;margin:0}table.sender-address thead td{display:table-cell;padding:1em;vertical-align:top;line-height:1.75em;text-align:left;font-weight:600;text-shadow:none;font-size:14px}table.sender-address tbody td{margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:top;border-top:1px solid #e5e5e5}table.sender-address tfoot td{border-top:1px solid #e1e1e1}table.sender-address tbody tr:nth-child(even) td{background:#f9f9f9}table.sender-address input.non-unique{background:#d62728}table.sender-address tbody td span{display:none}table.sender-address tbody td.non-unique span{display:block}table.sender-address input[type="text"]{max-width:100%;width:100%}table.sender-address input[type="email"]{max-width:100%;width:100%}table.sender-address tbody tr td:first-child select{width:100%}@media only screen and (max-width:600px){table.sender-address tbody tr td:first-child select{width:auto;max-width:100%}table.sender-address,table.sender-address tbody{display:block}table.sender-address thead{display:none}table.sender-address tbody tr td:first-child,table.sender-address thead tr td:first-child{width:100%;display:block}table.sender-address tbody tr,table.sender-address tbody td{display:block;width:100%}}
\ No newline at end of file \ No newline at end of file
...@@ -32575,9 +32575,13 @@ var SenderAddressTable = function (_React$Component) { ...@@ -32575,9 +32575,13 @@ var SenderAddressTable = function (_React$Component) {
   
var elements = 0; var elements = 0;
var addresses = props.addresses; var addresses = props.addresses;
var addresses_ids = {};
addresses.forEach(function (element) { addresses.forEach(function (element) {
element.id = elements; element.id = elements;
elements++; elements++;
// Mark non unique address_ids.
element.unique = addresses_ids[element.address_id] === undefined;
addresses_ids[element.address_id] = element.address_id;
}); });
/** /**
* @type {{addresses: array, elements: number, name: *, labels: ([]|NodeListOf<HTMLLabelElement>|any|*[]|NodeListOf<HTMLLabelElement>)}} * @type {{addresses: array, elements: number, name: *, labels: ([]|NodeListOf<HTMLLabelElement>|any|*[]|NodeListOf<HTMLLabelElement>)}}
...@@ -32604,6 +32608,7 @@ var SenderAddressTable = function (_React$Component) { ...@@ -32604,6 +32608,7 @@ var SenderAddressTable = function (_React$Component) {
state.elements++; state.elements++;
state.addresses.push({ state.addresses.push({
id: state.elements, id: state.elements,
unique: true,
address_id: '', address_id: '',
company: '', company: '',
name: '', name: '',
...@@ -32781,7 +32786,7 @@ var AddressRow = function (_React$Component) { ...@@ -32781,7 +32786,7 @@ var AddressRow = function (_React$Component) {
/** /**
* @type { * @type {
* { * {
* address: { id: number, address_id: string, company: string, name: string, address: string, postal_code: string, city: string, phone: string, email: string }, * address: { id: number, unique: boolean, address_id: string, company: string, name: string, address: string, postal_code: string, city: string, phone: string, email: string },
* index: number, * index: number,
* inputNamePrefix: string, * inputNamePrefix: string,
* labels: {} * labels: {}
...@@ -32816,8 +32821,13 @@ var AddressRow = function (_React$Component) { ...@@ -32816,8 +32821,13 @@ var AddressRow = function (_React$Component) {
{ id: this.state.inputNamePrefix + '_' + this.state.index, className: 'sender-address' }, { id: this.state.inputNamePrefix + '_' + this.state.index, className: 'sender-address' },
_react2.default.createElement( _react2.default.createElement(
'td', 'td',
{ className: address.unique ? '' : 'non-unique' },
_react2.default.createElement(_addressInput2.default, { className: address.unique ? '' : 'non-unique', address: address, field: 'address_id', name: field_name + '[address_id]', value: this.state.address.address_id }),
_react2.default.createElement(
'span',
null, null,
_react2.default.createElement(_addressInput2.default, { address: address, field: 'address_id', name: field_name + '[address_id]', value: this.state.address.address_id }) labels.non_unique_id
)
), ),
_react2.default.createElement( _react2.default.createElement(
'td', 'td',
...@@ -32978,7 +32988,7 @@ var AddressInput = function (_React$Component) { ...@@ -32978,7 +32988,7 @@ var AddressInput = function (_React$Component) {
}, { }, {
key: 'render', key: 'render',
value: function render() { value: function render() {
var className = 'input-text regular-input'; var className = 'input-text regular-input ' + this.props.className;
   
return _react2.default.createElement('input', { return _react2.default.createElement('input', {
className: className, className: className,
Source diff could not be displayed: it is too large. Options to address this: view the blob.
...@@ -67,7 +67,7 @@ export default class AddressInput extends React.Component { ...@@ -67,7 +67,7 @@ export default class AddressInput extends React.Component {
* @returns {*} * @returns {*}
*/ */
render () { render () {
let className = 'input-text regular-input'; let className = 'input-text regular-input ' + this.props.className;
return ( return (
<input <input
......
...@@ -15,7 +15,7 @@ export default class AddressRow extends React.Component { ...@@ -15,7 +15,7 @@ export default class AddressRow extends React.Component {
/** /**
* @type { * @type {
* { * {
* address: { id: number, address_id: string, company: string, name: string, address: string, postal_code: string, city: string, phone: string, email: string }, * address: { id: number, unique: boolean, address_id: string, company: string, name: string, address: string, postal_code: string, city: string, phone: string, email: string },
* index: number, * index: number,
* inputNamePrefix: string, * inputNamePrefix: string,
* labels: {} * labels: {}
...@@ -39,9 +39,10 @@ export default class AddressRow extends React.Component { ...@@ -39,9 +39,10 @@ export default class AddressRow extends React.Component {
let labels = this.state.labels; let labels = this.state.labels;
return ( return (
<tr id={this.state.inputNamePrefix + '_' + this.state.index} className="sender-address"> <tr id={this.state.inputNamePrefix + '_' + this.state.index} className='sender-address'>
<td> <td className={address.unique ? '' : 'non-unique'}>
<AddressInput address={address} field='address_id' name={field_name + '[address_id]'} value={this.state.address.address_id} /> <AddressInput className={address.unique ? '' : 'non-unique'} address={address} field='address_id' name={field_name + '[address_id]'} value={this.state.address.address_id} />
<span>{labels.non_unique_id}</span>
</td> </td>
<td> <td>
<AddressInput address={address} field='company' name={field_name + '[company]'} value={this.state.address.company} /> <AddressInput address={address} field='company' name={field_name + '[company]'} value={this.state.address.company} />
......
...@@ -14,10 +14,14 @@ export default class SenderAddressTable extends React.Component { ...@@ -14,10 +14,14 @@ export default class SenderAddressTable extends React.Component {
super(props); super(props);
let elements = 0; let elements = 0;
let addresses = props.addresses; let addresses = props.addresses;
let addresses_ids = {};
addresses.forEach(function(element){ addresses.forEach(function(element){
element.id = elements; element.id = elements;
elements++; elements++;
}) // Mark non unique address_ids.
element.unique = addresses_ids[element.address_id] === undefined;
addresses_ids[element.address_id] = element.address_id;
});
/** /**
* @type {{addresses: array, elements: number, name: *, labels: ([]|NodeListOf<HTMLLabelElement>|any|*[]|NodeListOf<HTMLLabelElement>)}} * @type {{addresses: array, elements: number, name: *, labels: ([]|NodeListOf<HTMLLabelElement>|any|*[]|NodeListOf<HTMLLabelElement>)}}
*/ */
...@@ -38,6 +42,7 @@ export default class SenderAddressTable extends React.Component { ...@@ -38,6 +42,7 @@ export default class SenderAddressTable extends React.Component {
state.elements++; state.elements++;
state.addresses.push({ state.addresses.push({
id: state.elements, id: state.elements,
unique: true,
address_id: '', address_id: '',
company: '', company: '',
name: '', name: '',
......
...@@ -2,8 +2,8 @@ msgid "" ...@@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-02-18 18:07+0100\n" "POT-Creation-Date: 2020-02-24 18:55+0100\n"
"PO-Revision-Date: 2020-02-18 18:08+0100\n" "PO-Revision-Date: 2020-02-24 18:55+0100\n"
"Last-Translator: Krzysztof Dyszczyk <krzysztof.dyszczyk@gmail.com>\n" "Last-Translator: Krzysztof Dyszczyk <krzysztof.dyszczyk@gmail.com>\n"
"Language-Team: Maciej Swoboda <maciej.swoboda@gmail.com>\n" "Language-Team: Maciej Swoboda <maciej.swoboda@gmail.com>\n"
"Language: pl_PL\n" "Language: pl_PL\n"
...@@ -22,45 +22,49 @@ msgstr "" ...@@ -22,45 +22,49 @@ msgstr ""
"X-Poedit-SearchPathExcluded-0: *.js\n" "X-Poedit-SearchPathExcluded-0: *.js\n"
"X-Poedit-SearchPathExcluded-1: vendor\n" "X-Poedit-SearchPathExcluded-1: vendor\n"
#: src/Labels.php:28 #: src/Labels.php:30
msgid "Identifier" msgid "Identifier"
msgstr "Identyfikator" msgstr "Identyfikator"
#: src/Labels.php:29 #: src/Labels.php:31
msgid "Company" msgid "Company"
msgstr "Firma" msgstr "Firma"
#: src/Labels.php:30 #: src/Labels.php:32
msgid "Name" msgid "Name"
msgstr "Imię i nazwisko" msgstr "Imię i nazwisko"
#: src/Labels.php:31 #: src/Labels.php:33
msgid "Address" msgid "Address"
msgstr "Adres" msgstr "Adres"
#: src/Labels.php:32 #: src/Labels.php:34
msgid "Postal code" msgid "Postal code"
msgstr "Kod pocztowy" msgstr "Kod pocztowy"
#: src/Labels.php:33 #: src/Labels.php:35
msgid "City" msgid "City"
msgstr "Miasto" msgstr "Miasto"
#: src/Labels.php:34 #: src/Labels.php:36
msgid "Phone" msgid "Phone"
msgstr "Telefon" msgstr "Telefon"
#: src/Labels.php:35 #: src/Labels.php:37
msgid "Email" msgid "Email"
msgstr "E-mail" msgstr "E-mail"
#: src/Labels.php:37 #: src/Labels.php:39
msgid "Add" msgid "Add"
msgstr "Dodaj" msgstr "Dodaj"
#: src/Labels.php:38 #: src/Labels.php:40
msgid "Delete" msgid "Delete"
msgstr "Usuń" msgstr "Usuń"
#: src/Labels.php:42
msgid "Identifier is not unique!"
msgstr "Identyfikator nie jest unikalny!"
#~ msgid "Custom" #~ msgid "Custom"
#~ msgstr "Własne" #~ msgstr "Własne"
...@@ -24,6 +24,8 @@ class Labels { ...@@ -24,6 +24,8 @@ class Labels {
public $button_delete; public $button_delete;
public $button_add; public $button_add;
public $non_unique_id;
public function __construct() { public function __construct() {
$this->address_id = __( 'Identifier', 'wp-settings-field-sender-address' ); $this->address_id = __( 'Identifier', 'wp-settings-field-sender-address' );
$this->company = __( 'Company', 'wp-settings-field-sender-address' ); $this->company = __( 'Company', 'wp-settings-field-sender-address' );
...@@ -36,6 +38,8 @@ class Labels { ...@@ -36,6 +38,8 @@ class Labels {
$this->button_add = __( 'Add', 'wp-settings-field-sender-address' ); $this->button_add = __( 'Add', 'wp-settings-field-sender-address' );
$this->button_delete = __( 'Delete', 'wp-settings-field-sender-address' ); $this->button_delete = __( 'Delete', 'wp-settings-field-sender-address' );
$this->non_unique_id = __( 'Identifier is not unique!', 'wp-settings-field-sender-address' );
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment